WSAECONNRESET 错误

hhhh63 2017-03-08 02:52:09
用 WinSocket 编写客户端,服务端是OMRON PLC,网骆通畅时没有问题。到工业现场无线通讯时,执行下列语句接收数据
int r = recv( m_sockPLC, (PSTR)m_pRecBuf, sizeof( m_pRecBuf ), 0 );
经常出现 WSAECONNRESET(10054) 错误,关闭连接后再重连也连不上。
请问高手,如何解决?
网上说“发送了RESET,再重新建立连接就行了。”
不知道如何发送RESET?请教高手。
谢谢
...全文
318 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhhh63 2017-03-23
  • 打赏
  • 举报
回复
引用 9 楼 VisualEleven 的回复:
这个你可以需要排查一下是否是服务端的问题。
在 Win10x64 Edge 下结贴很困难,试了好多次才成功,麻烦修复一下。谢谢。
Eleven 2017-03-21
  • 打赏
  • 举报
回复
这个你可以需要排查一下是否是服务端的问题。
hhhh63 2017-03-20
  • 打赏
  • 举报
回复
谢谢各位,方法都试了,没有解决问题,准备换个思路,用UDP协议试试。
AsdsNT 2017-03-09
  • 打赏
  • 举报
回复
    DWORD dwBytesReturned = 0;
BOOL bNewBehavior = FALSE;
DWORD status;

// disable new behavior using
// IOCTL: SIO_UDP_CONNRESET
status = WSAIoctl(s_, SIO_UDP_CONNRESET,
&bNewBehavior, sizeof(bNewBehavior),
NULL, 0, &dwBytesReturned,
NULL, NULL);

你可能需要加入这样的代码
worldy 2017-03-08
  • 打赏
  • 举报
回复
引用 5 楼 hhhh63 的回复:
引用 4 楼 worldy 的回复:
PLC也断电,再打开看看
PLC断电再打开能重新连接,但是要停止设备运行,能不能不停的情况下重新连接?
那问题应该出现在PLC端,你使用PLC指令复位其通信端口试试
hhhh63 2017-03-08
  • 打赏
  • 举报
回复
引用 4 楼 worldy 的回复:
PLC也断电,再打开看看
PLC断电再打开能重新连接,但是要停止设备运行,能不能不停的情况下重新连接?
worldy 2017-03-08
  • 打赏
  • 举报
回复
PLC也断电,再打开看看
hhhh63 2017-03-08
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
试试开启心跳包 setsockopt SO_KEEPALIVE
试了,不起作用
引用 2 楼 worldy 的回复:
实践中发现,断开连接后,本地端口要延时一定时间才可以用,应该是这个问题造成的不可以用
断开好长时间也不起作用
worldy 2017-03-08
  • 打赏
  • 举报
回复
实践中发现,断开连接后,本地端口要延时一定时间才可以用,应该是这个问题造成的不可以用
zgl7903 2017-03-08
  • 打赏
  • 举报
回复
试试开启心跳包 setsockopt SO_KEEPALIVE

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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