当前位置: 技术问答>linux和unix
请问select什么情况下可写
来源: 互联网 发布时间:2017-04-28
本文导语: 请问select什么情况下可写 我用select写了一个tcp跨平台的异步通信框架 在windows下通过select检测只要不是读状态返回的就是可写状态,于是我只用填充发送缓冲区,在可写的时候把数据发出去就OK了 但是同样的代码换到...
请问select什么情况下可写
我用select写了一个tcp跨平台的异步通信框架
在windows下通过select检测只要不是读状态返回的就是可写状态,于是我只用填充发送缓冲区,在可写的时候把数据发出去就OK了
但是同样的代码换到linxu平台上之后,select返回的所有套接字的状态都是可读,包括监听套接字和连接套接字,而且recv根本读不到数据,请问linux平台select什么时候可写呢,通过和上面相同的方式那我缓冲区的数据根本没发出去的机会了。
我用select写了一个tcp跨平台的异步通信框架
在windows下通过select检测只要不是读状态返回的就是可写状态,于是我只用填充发送缓冲区,在可写的时候把数据发出去就OK了
但是同样的代码换到linxu平台上之后,select返回的所有套接字的状态都是可读,包括监听套接字和连接套接字,而且recv根本读不到数据,请问linux平台select什么时候可写呢,通过和上面相同的方式那我缓冲区的数据根本没发出去的机会了。
|
你的select用对了吗,recv读的返回为0,表示连接已经中断了哦。
|
看一下网络是否可ping。