大侠们帮忙看一下,为何我一到recv()就卡住了呢?

调用recv,若是对方没有数据过来就阻塞住了。只有下面状况才会返回:
a. 对方向你发送了数据;
b. 对方关闭了链接。

建议用异步 socket或同步非阻塞socket,用select肯定什么时候数据到达。windows

.异步

很是感谢~~如今我是移植到windows上,select不能用吧,再就是我用以下的方法设置非阻塞对吧,
     flags = 1;
    ioctlsocket(svr_conn, FIONBIO, &flags);
n = recv(svr_conn, &rst, 1, 0);
可是我这样设置以后recv()返回值n为-1?仍是没有读取成功呢?而后就不知道再怎么改了···
引用 2 楼  的回复:
调用recv,若是对方没有数据过来就阻塞住了。只有下面状况才会返回:
a. 对方向你发送了数据;
b. 对方关闭了链接。socket

建议用异步 socket或同步非阻塞socket,用select肯定什么时候数据到达。同步

 

 

WSAAsyncSelect(ServerSock, m_hWnd, NETWORK_EVENT, FD_ACCEPT | FD_CLOSE | FD_READ | FD_WRITE)

非阻塞设置io

相关文章
相关标签/搜索