环境描述:Winxp(服务器端) 使用语言:C++
Vxworks(客户端) 使用语言:C
目的:使用socket,实现服务器端和客户端通信
问题描述:PC机作为服务器端通过套接字给一个Vxworks客户端发送信息。
pc机的数据每秒更新1次,每次都不一样。客户端每0.5秒收一次,总共收100次。客户端输出接收的数据,永远没有更新。
PC机的发送程序是用VC++写的。我测试了很多次是对的。发送的数据是更新了的。
但是接收方(Vxworks客户端)显示的永远是第一次的数据。
是不是因为我把客户端和服务端的套接字选项
setsockopt(MySkt,IPPROTO_TCP,TCP_NODEDLAY,&optval,sizeof(optval));
像我这种情况该如何解决,如有碰到的兄弟麻烦告知,不胜感激~涕零!
------解决方案--------------------------------------------------------
为啥不在程序中设置一下断点,跟踪看一下不就知道到底问题出在哪里了
------解决方案--------------------------------------------------------
我也遇到过类似情况:setoption没问题。首先你可以把接受的buffer每次接受前都情况,来接受;其次,数据没有变化主要是因为连续接受导致了tcp的打包发送导致的,将数个数据同时打包发送而不是分开发送;最后,你可以再用vc写一个客户端程序,主要是用断点观察接受的buffer中的接受数据。
------解决方案--------------------------------------------------------
说的比较笼统,“客户端每0.5秒收一次,总共收100次”select吗,就每次有数据返回就打印一下,估计是你vxworks上的代码有问题,要使用6.4以上的用workbench attach上断点看看也可以