如何通过同一局域网向另一台计算机发送双打?
How to send a double type to another computer through the same LAN?
我创建了一个计算器,它使用 c# windows 表单应用程序根据给定的数字输出两个双精度数。
我想将这些数字输出到另一台连接到 LAN(以太网)的计算机。我已尝试同时使用套接字和 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 documentation 上阅读有关 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);
我创建了一个计算器,它使用 c# windows 表单应用程序根据给定的数字输出两个双精度数。
我想将这些数字输出到另一台连接到 LAN(以太网)的计算机。我已尝试同时使用套接字和 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 documentation 上阅读有关 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);