如何使用套接字实现服务器客户端编程,其中服务器向客户端发送消息而不从客户端获取请求?

时间:2015-03-01 09:26:11

标签: c++ udp

从服务器发送到方法的客户端和服务器确认回客户端。 以及服务器可以发送给客户端的另一条消息。 那么它需要两个插座还是只需一个插座?

1 个答案:

答案 0 :(得分:0)

您可以使用单插槽执行此操作,但您需要更复杂的方法。

如果您在单线程中工作,则必须检查套接字,如果有重复等待读取,但必须使用无块检查,可以使用select系统调用轻松完成超时= 0或一段很短的时间。

另一个解决方案可以是多线程解决方案,当一个线程从2个线程访问时,一个线程处理发送请求/响应,另一个线程从服务器接收请求/响应。两个线程都应专用于网络,接收方等待recv从套接字读取并填充一些作业数据包队列,发送方等待数据包队列,从中获取数据包,以及{{1}他们通过套接字。和其他一些线程从队列中获取数据包,处理它们,如果需要写入out队列,其他线程可能会将用户的请求添加到out队列,等等......

无论如何,您必须定义一些在响应请求之间不同的协议。