如何通过同一局域网向另一台计算机发送双类型
本文关键字:计算机 一台 类型 何通过 局域网 | 更新日期: 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。所以如果你打算用更大的数字,你必须用int
或long
代替。这也意味着终端必须读取更多字节。
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);