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

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。因此,如果您打算使用更大的数字,则必须改用 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);