发布网友
共2个回答
热心网友
1.设置socket为非阻塞
2.connect-----立即返回如果==0 connect成功 ,如果 == -1 && errno= EINPROGRESS
3.用select判断可写和异常(更加严谨)
4. if ( 不可写 || 出现异常 )---关闭socket。
else{
//可写 且无异常 用getsocketopt判断错误码
errno == 0 ; //connect success
}
//附上代码 仅供参考
unsigned long ul = 1;
热心网友
我也来抽个热闹,很久没有见到NIO问题。这位同学,你在生成NIO客户端连接的时候 有一个参数是“是否同步连接”,你可以借这个来确认连接成功。其次,否则,你就只有像刚才那位老兄说的那样select or selectNow 来了解 连接状况。记得,当select or selectNow 之后有个判断连接是否有效的方法 你可以找下,它应该很有用,希望能够帮助到你。
是否可以解决您的问题?追问判断方法我知道,只是不知道在select判断可读后是否还需要调用getsockopt进一步判断,还有在有些地方见到判断可读或可写的,我记得好像只有在可读写下才调用getsockopt进一步判断,因为可读写也可能是连接不成功。所以现在我的问题是什么时候才需要调用getsockopt进一步判断,还有select是判断可写,还是判断可读,还是判断可读写?不过我发现你好像是粘贴的回答吧,这样可不好啊