- 论坛徽章:
- 0
|
我编写了一个局域网内的客户端/服务器程序,其中服务器使用Windows系统(VC编程),客户端使用linux系统(C语言编程).服务器每30秒向客户端发送查询信号,来判断客户端是否运行正常,客户端接收到以后立即向服务器反馈;在此同时,服务器根据设置需要,随时要向客户端发送各种指令信号。在程序调试过程中,发现客户端运行一段时间后,接收的服务器的指令或查询信号比较混乱,使得客户端不能按照设计要求运行,不知是什么原因。是不是有这种原因:服务器的查询信号和指令信号在某一时间同时向客户端发送,因为客户端用select函数判断套接口是否有数据进来,判断时间间隔为1秒,也就是在这1秒钟时间里,同时有查询信号和指令信号进入套接口,致使客户端无法正确判断接收到的是查询信号还是指令信号,我的客户端接收思路如下:
while(1)
{
FD_ZERO(&rdset);
FD_SET(sd, &rdset);
tv.tv_sec = 1;
tv.tv_usec = 0;
switch(select(FD_SETSIZE, &rdset, NULL, NULL, &tv))
{
case -1: ...
case 0: ...
default: ...
}
}
用select函数判断套接口是否有数据进来,时间间隔为1秒。
如果不是上面原因,该如何解决此问题。 |
|