关闭client关闭问题我已经明白了,谢谢大家了。 现在是这样的:我的程序是跟php网页通过socket交互的,php里有一个函数是socket_select 原文: socket_select -- Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec int socket_select ( resource read_fd, resource write_fd, resource except_fd, int tv_sec [, int tv_usec]) 没找到其它更详细的文档了,看得不大清楚,所以想问问关于socket中select的用法!
printf("client closed\n");
}
我用的是api
在Server调用CAsyncSocket::OnClose能得到Client关闭的消息
没有的话,那套接字出错有可能就是client端关闭了。
有谁能详细介绍一下么?
SOCKET s,
int level,
int optname,
const char FAR *optval,
int optlen
);
用setsockopt设置SOL_SOCKET的SO_KEEPALIVE选项
是结束client程序?还是运行client程序的电脑被关机?
如果是正常关闭,对方会收到FD_CLOSE。异常情况,对方不会知道,直到他需要和另一方通信,发送了数据之后会收到RST,才知道对方已经关闭了。
正常情况,只要程序考虑到了,就没问题。
异常情况,必须要使用额外的手段,如果你的通信经常有数据交互,就不用担心这个;如果中间可能停止很长一段时间没有数据交互,那么可以使用一些数据来询问对方,希望回答,确认连接没问题。
楼上的方法是打开保活计数器,但是并不推荐使用。
现在是这样的:我的程序是跟php网页通过socket交互的,php里有一个函数是socket_select
原文:
socket_select -- Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec int socket_select ( resource read_fd, resource write_fd, resource except_fd, int tv_sec [, int tv_usec])
没找到其它更详细的文档了,看得不大清楚,所以想问问关于socket中select的用法!