关于socket设置为非阻塞式出现的问题

yifuzhiming CSDN会员 yifuzhiming 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我一加上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;

...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
yifuzhiming CSDN会员
网络编程 18,356 成员 64,161 内容