- 论坛徽章:
- 9
|
本帖最后由 wlmqgzm 于 2016-08-23 12:09 编辑
// 我的检测socket_closed的代码
bool Asio_tcp_socket::find_socket_closed( boost::asio::ip::tcp::socket &socket1, int int_socket_handle_init )
{
int int_socket_handle = socket1.native_handle();
if( int_socket_handle <= 0 ) {
if( g_message_out_level>=5 ) log_message_int( "find socket closed. socket_init", int_socket_handle_init );
return true;
}
struct tcp_info info;
int length = sizeof(info);
memset( &info,0,sizeof(info) );
getsockopt( int_socket_handle, IPPROTO_TCP, TCP_INFO, &info, (socklen_t *)&length );
if( info.tcpi_state == 1 ) return false;
if( g_message_out_level >=5 ) log_message_int( "find socket closed. socket_init", int_socket_handle_init );
return true;
} |
|