1

如果我为 accept() 返回的连接套接字添加一个事件,如下所示

    event_set(&conn_ev, connfd, EV_READ|EV_PERSIST, on_recv, NULL);
    event_base_set(base, &conn_ev);
    event_add(&conn_ev, NULL);

如果在某个时候,本地程序(而不是对等方)关闭套接字,会conn_ev被触发吗?如果是,如何检测事件是否是由于套接字关闭引起的?

是 recv(connfd,..) 返回 -1 并且设置了 errnoEBAD还是任何其他情况?

谢谢!

4

1 回答 1

0

如果套接字被另一端很好地关闭,则所有套接字都被标记为可读,并read返回零。当收到错误时,它们被标记为可读或可写,带有readwrite返回-1

例如,请参阅socket(7) 手册页以获取状态表。

于 2013-06-20T13:22:26.163 回答