【发布时间】:2013-04-07 11:21:51
【问题描述】:
我正在用 C++ 编写客户端,客户端在两个不同的端口上获得响应。 我正在侦听主线程中的一个端口,同时我创建了其他线程(基于 posix),如下所示:
void *receiveFunc(void *ptr)
{
try {
while ( true ) {
svr_sock << svr_data;
cout<<svr_data<<endl;
}
} catch ( SocketException& ) {}
}
但是当它进入这个线程时,它永远不会出来,直到我在套接字上收到一些东西。
我该如何克服这个问题?
【问题讨论】:
-
因为套接字是阻塞的?如何使其成为非阻塞取决于您的系统。
-
我现在正在使用 linux,我尝试了不同的方法但没有工作:(.
-
查看this old question中的代码。这就是在所有现代 POSIX 系统(包括 Linux 和 Mac OSX)上创建非阻塞套接字的方法。
标签: c++ sockets pthreads posix