BSD socket 非阻塞模式连接
来源:互联网 发布:ios软件更新 编辑:程序博客网 时间:2024/05/20 23:58
BSD socket 非阻塞模式连接,适用用各种实现BSD socket的操作系统:windows, linux, unix, ios, android.
int CNetTcpC::StartConnect(LPCSTR pszIPAddr, UINT nPort){ SOCKADDR_IN ctrl_sin; UINT sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); ctrl_sin.sin_family = AF_INET; ctrl_sin.sin_addr.s_addr = inet_addr(m_szSvrIP); ctrl_sin.sin_port = htons(m_uiSvrPort); bzero(&(ctrl_sin.sin_zero), 8); int flag = fcntl(sock, F_GETFL, 0); fcntl(sock, F_SETFL, flag | O_NONBLOCK); struct timeval tmout; tmout.tv_sec = 10; tmout.tv_usec = 0; setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, &tmout, sizeof(tmout)); int err = connect(sock, (SOCKADDR*)&ctrl_sin, sizeof(ctrl_sin)); printf("Connect error no is %d:\r",err); //设置select超时时间间隔 fd_set fdwrite; struct timeval tvSelect; FD_ZERO(&fdwrite); FD_SET(sock, &fdwrite); tvSelect.tv_sec = 10; tvSelect.tv_usec = 0; int retval = select(sock + 1,NULL, &fdwrite, NULL, &tvSelect); printf("select error no is %d:\r",retval); if ( retval <= 0 ) { close(sock); sock = INVALID_SOCKET; return FALSE; } //在connect成功之后,设成阻塞模式 flag = fcntl(sock, F_GETFL,0); flag &= ~ O_NONBLOCK; fcntl(sock, F_SETFL, flag); return TRUE;}
- BSD socket 非阻塞模式连接
- linux socket 非阻塞模式进行连接
- socket阻塞非阻塞模式
- socket 非阻塞模式
- Socket 阻塞模式和非阻塞模式
- socket阻塞模式和非阻塞模式
- Socket 阻塞模式和非阻塞模式
- 非阻塞socket 的连接
- 非阻塞socket 的连接
- Socket实现非阻塞连接
- 非阻塞Socket连接处理
- 非阻塞socket的连接
- 非阻塞socket 的连接
- 非阻塞socket的连接
- 非阻塞socket的连接
- Socket实现非阻塞连接
- 非阻塞socket的连接
- Socket非阻塞连接过程
- 自定义绘制按钮
- AIR Not supported in current profile错误
- 串行通信
- 实时Linux下的PCI驱动开发(下)
- ./configure,make,make install的作用
- BSD socket 非阻塞模式连接
- C# 生成二维码和zxing类库
- 棋牌游戏走向何方
- 对比javascript与jquery对ajax的实现
- 设计思路
- google面试题目:寻找丑数
- 地图投影系列介绍(三)_ 地图投影
- flex java通讯协议
- 关于LINUX某些驱动程序如GPIO编译的时候提示未定义的问题