请问select什么情况下可写

sumnet 2013-10-21 02:42:52
请问select什么情况下可写
我用select写了一个tcp跨平台的异步通信框架
在windows下通过select检测只要不是读状态返回的就是可写状态,于是我只用填充发送缓冲区,在可写的时候把数据发出去就OK了
但是同样的代码换到linxu平台上之后,select返回的所有套接字的状态都是可读,包括监听套接字和连接套接字,而且recv根本读不到数据,请问linux平台select什么时候可写呢,通过和上面相同的方式那我缓冲区的数据根本没发出去的机会了。
...全文
343 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2013-10-22
  • 打赏
  • 举报
回复
看一下网络是否可ping。
sumnet 2013-10-21
  • 打赏
  • 举报
回复
引用 1 楼 Idle_Cloud 的回复:
你的select用对了吗,recv读的返回为0,表示连接已经中断了哦。
谢谢回复,已经解决了,是我的判断出问题了,现在可以正常读写了 不过有个问题,我跑Linux服务端,Windows客户端连接没问题 跑Windows服务端,Linux客户端去连,阻塞connect返回的是110timeout,不知道这样跨平台连接有什么要注意的么,我是用本机虚拟机跑的LINUX
Carl_CCC 2013-10-21
  • 打赏
  • 举报
回复
你的select用对了吗,recv读的返回为0,表示连接已经中断了哦。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧