- 论坛徽章:
- 0
|
本帖最后由 fantansy 于 2010-10-28 17:16 编辑
最近写一个客户端程序,负责向服务器发送数据,同时也能接收到服务器传来的数据。使用select机制。
socket()--->
connect()--->
设置IP,port--->
然后就是:
while(1)
{
FD_ZERO(sockfd,&rfds);
FD_ZERO(sockfd,&wfds);
FD_SET(sockfd,&rfds);
FD_SET(sockfd,&wfds);
select(sockfd+1,&rfds,&wfds,&tv);
正常情况下,收发数据正常,。但是当客户端断电后重新连接服务器。连接connect正常,却无法发送数据:
现象如下;
1。select 检测到recv可读,但是返回值0,即EOF。
2。select并没检测到send可写,如果我强制send,,返回-1;
3。最奇怪的就是,正常情况下,select返回值应该是1。但此时select返回的是2。
如果此时
1‘。服务器向重启后的客户端发送数据,然后就可以正常接收客户端发来的数据,或者2’服务器关闭,再打开,此后客户端-服务器端也能正常通讯。
我的问题是:怎样在保证不处理服务器端的情况下,保证崩溃后的客户端依然正常向服务器发送数据呢?
欢迎讨论。 |
|