如何通过同一局域网向另一台计算机发送双类型

本文关键字:计算机 一台 类型 何通过 局域网 | 更新日期: 2023-09-27 18:03:20

我创建了一个计算器,它基于给定的数字输出两个双数字,使用c# windows窗体应用程序。

我想把这些数字输出到另一台连接到局域网(以太网)的计算机上。我试过同时使用套接字和WCF,但找不到合适的方法来使其工作。

IPHostEntry ipHostInfo = Dns.Resolve(DnsGetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 61);
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
    sender.Connect(remoteEP);
    lblInfo.Text = sender.RemoteEndPoint.ToString();
    byte[] azm = new byte[] {byte.Parse(Azm.ToString()) };
    byte[] ele = new byte[] {byte.Parse(Ele.ToString()) };
   sender.Shutdown(SocketShutdown.Both);
   sender. Close();
}

这是我试图做的事情,但它没有工作。

我希望我所要求的是可能的,非常感谢您能提供的任何帮助。

如何通过同一局域网向另一台计算机发送双类型

您忘记实际发送数据了

byte[] azm = new byte[] {byte.Parse(Azm.ToString()) };
byte[] ele = new byte[] {byte.Parse(Ele.ToString()) };
sender.Send(azm); //<-- You forgot to call these two.
sender.Send(ele); //<-- You forgot to call these two.
sender.Shutdown(SocketShutdown.Both);
sender. Close();

MSDN文档上阅读更多关于Socket.Send()的信息。


请记住,byte只能从0到255。所以如果你打算用更大的数字,你必须用intlong代替。这也意味着终端必须读取更多字节。

byte[] azm = BitConverter.GetBytes(int.Parse(Azm.ToString()));
byte[] ele = BitConverter.GetBytes(int.Parse(Ele.ToString()));

如果您使用int,终端必须读取4字节,如果您使用long,终端必须读取8字节。

反转 BitConverter.GetBytes() 可以这样做:

int azm = BitConverter.ToInt32(<byte array here>, 0);
...or...
long azm = BitConverter.ToInt64(<byte array here>, 0);