Socket_报头结构形式问题

wsxxdzlj 2016-04-16 10:41:20
各位大神,我正在用socket模块来操作网口与设备(三菱PLC)通信。
当设备侧网口的结构形式设为IEEE802.3时,能够正常通信;而当设备侧网口的结构形式设置为Ethernet(V2.0)之后,就无法正常解析报文了。
想请教一下,socket中的哪一个参数是设置报头的结构形式的?先行谢过。

我的socket定义如下:
addrSrv.sin_addr.S_un.S_addr = inet_addr(m_iAddress);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(m_iPort);
wVersionRequested = MAKEWORD(2, 2);
SocketErr = WSAStartup(wVersionRequested, &wsaData);

sockClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);=


::setsockopt(sockClient, SOL_SOCKET, SO_SNDTIMEO, (char *)&TimeOut, sizeof(TimeOut));
::setsockopt(sockClient, SOL_SOCKET, SO_RCVTIMEO, (char *)&TimeOut, sizeof(TimeOut));

const char chOpt = 1;
::setsockopt(sockClient, IPPROTO_TCP, TCP_NODELAY, &chOpt, sizeof(char));

connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)) ;
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
七擒关羽 2016-04-18
  • 打赏
  • 举报
回复
这种应该是设备的通信格式修改了,socket的端口会不一样了,产生不同的socket服务了
jaty 2016-04-16
  • 打赏
  • 举报
回复
SOCKET本身没有包含报头的参数,都是在数据传输中不断封装的数据
wsxxdzlj 2016-04-16
  • 打赏
  • 举报
回复
那为何当设备侧网口的结构形式设为IEEE802.3时,能够正常通信;而当设备侧网口的结构形式设置为Ethernet(V2.0)之后,就无法正常解析报文了? 是设备侧的原因吗?

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧