5729|3

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急问,socket通信从WINDOWS移植到VXWORKS后,操作耗时的问题 [复制链接]

 TCP双网冗余通信的程序,比如是A网和B网。socket为非阻塞select模型。
远程连接的数据接收发送任务由一个线程负责完成,大约每50ms接收发送一次。在wing下拔开A网后,B网不会受到影响。移植后,A拔出后,明显感觉线程在send函数有阻塞,导致B网的收发受到影响。
我已经把下面选项设置了:
SO_KEEPALIVE 启动生命保持
SO_SNDBUF 和 SO_RCVBUF 是2*周期最大数据量
SO_SNDTIMEO 和 SO_RCVTIMEO 之前没设这个选项,一拔网线整个收发任务就阻塞了,现在设为0,也已经设为成功,但为什么还会有延时?
网上说可以把SO_SNDBUF设为0,不经过缓冲直接发送,但也不行。
请高手指点!

最新回复

已解决。是因为调试时logmsg打印较多,拔网时如果正在输出,将导致所有可能打印的地方阻塞。打印内容少点周期长些都会避免这个问题。 困扰了我好几天,是个教训,也希望能对大家有所帮助。 感谢友情关注的朋友,结贴。  详情 回复 发表于 2009-11-1 16:12
点赞 关注
 

回复
举报

64

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
wing是什么工具啊?A网和B网是怎么样连接的?
A拔出后,明显感觉线程在send函数有阻塞,,导致B网的收发受到影响。能否解释得更详细一些?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不好意思,我没说清楚。就是在Windows下的程序,拔开网络线,非阻塞socket检测不可写,然后返回,这个过程很快。但移植后,会阻塞几十毫秒甚至更长的时间。
请问我是不是还有一些关键的选项没有设置?
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

4
 
已解决。是因为调试时logmsg打印较多,拔网时如果正在输出,将导致所有可能打印的地方阻塞。打印内容少点周期长些都会避免这个问题。
困扰了我好几天,是个教训,也希望能对大家有所帮助。
感谢友情关注的朋友,结贴。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表