我常用的 socket connect 代码,主要是为了记录非阻塞问题
2010-11-02 11:51
369 查看
SOCKET connectToS() { int e=0; struct timeval timeout ; fd_set r; SOCKET s=socket(AF_INET,SOCK_STREAM,0); //设置非阻塞方式连接 unsigned long ul1 = 1; e = ioctlsocket(s,FIONBIO,(unsigned long*)&ul1); if(e==SOCKET_ERROR) { fprintf(stderr,"设置[非阻塞]方式错误,请重新启动!/n"); ::closesocket (s); return -1; } struct sockaddr_in addr; memset(&addr,0,sizeof(struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_port = htons(SERVERPORT); addr.sin_addr.s_addr = inet_addr(SERVERIP); connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); //select 模型,即设置超时 FD_ZERO(&r); FD_SET(s,&r); timeout.tv_sec = 5; //连接超时10秒 timeout.tv_usec =0; e=select(NULL,NULL,&r,NULL,&timeout); if(e<=0) { fprintf(stderr,"连接超时,请检查网络是否可用!/n"); ::closesocket(s); return -1; } unsigned long ul2= 0; e = ioctlsocket(s,FIONBIO,(unsigned long*)&ul2); if(e==SOCKET_ERROR) { fprintf(stderr,"设置[阻塞]方式错误,请重新启动!/n"); ::closesocket (s); return -1; } return s; }
相关文章推荐
- C语言Socket入门非阻塞socket(connect timieout问题)
- 面向连接的socket数据处理过程以及非阻塞connect问题
- 面向连接的socket数据处理过程以及非阻塞connect问题
- 面向连接的socket数据处理过程以及非阻塞connect问题
- 记录 serverSocket socket 输入,输出流,关闭顺序,阻塞,PrintWriter的一些问题.
- 非阻塞模式的设置、设置socket为非阻塞模式 解决connect阻塞问题
- centos下mysql问题记录--ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/
- 面向连接的socket数据处理过程以及非阻塞connect问题
- 【转】C语言Socket入门非阻塞socket(connect timieout问题)
- C语言Socket入门非阻塞socket(connect timieout问题)
- Java mina socket编程时readLine()阻塞问题
- Java,InputStream,Socket阻塞.(关于HTTP请求的IO问题自我总结)
- Java中Socket上的Read操作阻塞问题
- 常用代码记录
- 最近用struts2,遇到几个出错时未能打log的问题,算是小细节吧,记录一下!写代码必须继续坚持良好习惯!
- eclipse中使用mybatis-generator逆向代码生成工具问题解决记录
- 【记录】使用eclipse遇到的问题一:eclipse中按空格/Tab键错误触发代码补全
- Cannot connect to VM问题的处理记录
- 关于socket的connect超时的问题
- 非阻塞socket下客户端connect + select简单demo