Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过同一局域网向另一台计算机发送双面打印?_C#_Sockets_Tcp_Lan_Data Transfer - Fatal编程技术网

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

C# 如何通过同一局域网向另一台计算机发送双面打印?,c#,sockets,tcp,lan,data-transfer,C#,Sockets,Tcp,Lan,Data Transfer,我使用c#windows窗体应用程序创建了一个计算器,它根据给定的数字输出两个双精度数字 我想将这些数字输出到另一台连接到LAN(以太网)的计算机上。我曾尝试使用套接字和WCF,但找不到合适的方法使其工作 IPHostEntry ipHostInfo = Dns.Resolve(DnsGetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint remoteEP = new IPEndPoint(ipAdd

我使用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();
如果使用
int
端点必须读取4个字节,如果使用
long
端点必须读取8个字节

可以像这样进行反转:

int azm = BitConverter.ToInt32(<byte array here>, 0);
...or...
long azm = BitConverter.ToInt64(<byte array here>, 0);
int-azm=BitConverter.ToInt32(,0);
或
long azm=位转换器.ToInt64(,0);

什么是“不起作用”?运行程序时会发生什么情况?这与您想要的有何不同?有关将
double
值转换为
byte[]
的信息,请参阅标记的副本。它实际上比您需要的更彻底,因为它显示了如何一次处理多个
double
。您可以随意忽略
double
数组处理,只需使用转换每个
double
值的部分即可。请注意,一旦有了
字节[]
,发送数据就只需传输字节,这是网络API的一项非常基本的操作。在这方面你不需要帮助,但是如果你需要,发布一个新的问题,并确保包含一个可靠地再现问题的好问题。请注意,你当前的“转换”代码是完全错误的。假设
Azm
Ele
都是
double
变量,那么你所做的充其量就是从
double
byte
进行艰难的转换。最糟糕的情况是,您的代码大部分时间都会抛出异常,因为通常情况下,
double
值的文本表示不能解析为
字节
值。下面发布的一个答案以同样的方式进行,而不是提供良好、有用的数字转换,从而加剧了您的错误。
int azm = BitConverter.ToInt32(<byte array here>, 0);
...or...
long azm = BitConverter.ToInt64(<byte array here>, 0);