我有一个客户端通过C伯克利套接字连接到服务器。我(尝试)通过使用MSG_DONTWAIT和MSG_PEEK调用套接字上的recv()定期检查连接是否仍然有效。但是,我发现这个调用在某些情况下(例如,在连接的接口被关闭之后)和在没有数据可读取的情况下返回EAGAIN。因此,我无法区分使用此方法连接是否仍然有效。
这是我的功能:
/* return 1 if still connected, 0 otherwise */
int still_connected()
{
int nbytes_recvd = 0;
char buf[2];
int err;
nby