关于socket设置为非阻塞式出现的问题
我一加上ret = ioctlsocket(sock, FIONBIO,(unsigned long *)&ul);这行代码后,connect就出错了,我想把这个socket设置为非阻塞的,请问如何做啊,谢谢
WSADATA wsaData;
SOCKADDR_IN server_addr;
WORD wVersion;
wVersion = MAKEWORD(2,2);
/*初始化socket资源*/
WSAStartup(wVersion, &wsaData);
//获取长度
int len = WideCharToMultiByte(CP_ACP, 0, ip_p, ip_p.GetLength(), NULL, 0, NULL, NULL);
char * cip = new char[len + 1];
memset(cip, 0x00, len + 1);
//宽字节转多字节
WideCharToMultiByte(CP_ACP, 0, ip_p, ip_p.GetLength(), cip, len, NULL, NULL);
//cip[len+1] = '\0';
//server_addr.sin_addr.s_addr = inet_addr(tmpData);
server_addr.sin_addr.s_addr = inet_addr(cip);
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(_ttoi(port_p));
if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
//create socket error
check = false;
}
unsigned long ul = 1;
int ret;
ret = ioctlsocket(sock, FIONBIO,(unsigned long *)&ul);//设置成非阻塞模式。
if (connect(sock, (struct sockaddr *) &server_addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
{
//connect error
check = false;
}
else
{
//连接成功
check = true;
m_bActive = true;
m_connectype = TCPIP;
}
delete []cip;
...全文
相关推荐
Python Socket模块详解[代码]
Python的socket模块为网络编程提供了完整且强大的工具集,从基础的TCP和UDP连接构建,到高级的参数配置和问题解决,再到阻塞式和非阻塞式连接的实现,它都提供了丰富的接口来满足不同的编程需求。
socket 客户端
然而,实际应用中,为了提高效率,可能需要使用非阻塞式Socket、多线程或者异步I/O等高级技术。同时,理解TCP/IP协议栈、错误处理和安全问题也是进行Socket编程不可或缺的知识点。
[转载] 多线程阻塞式网络编程socket_源代码
创建服务器Socket,绑定到特定的IP地址和端口号。2. 开启监听,设置最大连接队列长度。3. 接受客户端连接,创建新的线程处理。4. 在工作线程中,阻塞式接收和发送数据。5.
非阻塞式socket编程select()
本文主要介绍了非阻塞式socket编程中的`select()`函数,以及与数据库编程相关的概念,包括数据库驱动层、应用程序接口层和用户接口层的类与功能。在非阻塞式socket编程中,`selec
VS2015-Socket非阻塞式文件传输
本项目"VS2015-Socket非阻塞式文件传输"利用Visual Studio 2015开发环境,实现了非阻塞式的Socket文件传输功能,支持包括jpg、mov、iso等多种常见文件格式的传输。


网络编程
