我正在编写两个程序,一个是用c#编写的,一个是用c++编写的,用来通过套接字连接发送数据。
这两个程序都运行,都返回相同的期望值iResult,但只有c++程序控制的设备,我正在通信。
当我在手表中查看调试模式下的SendData值时,有一些不同的需要。例如:
SendData[0] = 143 // c# result
SendData[0] = -113 ' ' //c++ resultbyte[]问题:这是与之间的区别,还是在如何实现发送方法方面的差异?**
c++:
#pragma comment(lib, "Ws2_32.lib")
WSADATA wsaData;
SOCKET MainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
char SendData[1024];
SendData[i] = 0x8f; i = i + 1;
SendData[i] = 0xa5; i = i + 1;
SendData[i] = 0x02; i = i + 1;
//... etc
SendData[i] = 0x60; i = i + 1;
iResult = send(MainSocket, buf, i, 0);c#:
ipEnd = new IPEndPoint(ip, port);
MainSocket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IPv4);
MainSocket.Connect(ipEnd);
byte[] SendData = new byte[1024];
SendData[i] = 0x8f; i = i + 1;
SendData[i] = 0xa5; i = i + 1;
SendData[i] = 0x02; i = i + 1;
//... etc
SendData[i] = 0x60; i = i + 1;
int iResult = MainSocket.Send(SendData, i, SocketFlags.None);发布于 2016-03-17 14:45:39
套接字类型为SocketType.Raw,用于C#代码,但您似乎没有正确地创建C#数据包。你最后发送的是垃圾,你的设备或任何期待适当TCP数据包的人都无法理解它。
https://stackoverflow.com/questions/36063515
复制相似问题