如何在服务器上的线程和客户端的线程之间进行同步?

时间:2012-12-28 13:21:13

标签: c linux pthreads client-server

我的应用程序在服务器端和客户端创建文件传输线程。现在我在客户端使用延迟策略(一个简单的for循环),以便在服务器中的线程创建过程之后完成客户端中的线程创建。

该应用程序正常。但这很粗糙,如果不是丑陋的话。我需要找到一种技术方法,以便客户端线程在知道服务器线程已经启动之前不会启动。

我尝试从服务器到客户端使用send()。客户端recv()必须阻止服务器的信号,但显然它不会。客户端控制台上的消息是关于服务器拒绝连接。有什么提示吗?

2 个答案:

答案 0 :(得分:1)

select()可能是你正在寻找的东西:你给它一组套接字并阻塞,直到这些套接字上发生了某些事情(并且你可以提供超时以避免永远等待)。
调用select()等待,直到客户端收到数据,然后recv()以确保收到的内容是来自服务器的正确消息。

答案 1 :(得分:0)

似乎你使用无连接传输。在这种情况下,我建议玩乒乓球游戏,客户端将“ping”udp数据包发送到服务器循环(合理的时间段),直到客户端从服务器收到“pong”UDP数据包或超时。