首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Net.Sockets发送与stdcall:发送

System.Net.Sockets发送与stdcall:发送
EN

Stack Overflow用户
提问于 2016-03-17 14:30:41
回答 1查看 91关注 0票数 1

我正在编写两个程序,一个是用c#编写的,一个是用c++编写的,用来通过套接字连接发送数据。

这两个程序都运行,都返回相同的期望值iResult,但只有c++程序控制的设备,我正在通信。

当我在手表中查看调试模式下的SendData值时,有一些不同的需要。例如:

代码语言:javascript
复制
SendData[0] = 143 // c# result
SendData[0] = -113 ' ' //c++ result

byte[]问题:这是与之间的区别,还是在如何实现发送方法方面的差异?**

c++:

代码语言:javascript
复制
#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#:

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-17 14:45:39

套接字类型为SocketType.Raw,用于C#代码,但您似乎没有正确地创建C#数据包。你最后发送的是垃圾,你的设备或任何期待适当TCP数据包的人都无法理解它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36063515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档