套接字:能够同时收听和发送

时间:2013-08-30 00:22:21

标签: c multithreading sockets

我想弄清楚如何解决这个问题:

我的服务器需要能够执行以下两个功能:

  • 当收到中断时,服务器需要能够向所有客户端发送(多播)新的XYZ信息
  • 当新客户端加入广播组时,它需要所述XYZ信息。服务器需要能够处理来自客户端的XYZ读取请求。

因此服务器需要能够侦听来自客户端的请求,同时在中断事件上向客户端发送信息。

我的客户需要能够执行以下两项功能:

  • 当它第一次加入广播组时,它需要能够从服务器读取XYZ。
  • 当服务器遇到中断事件时,它将发送出XYZ。我的客户需要倾听这些信息。

我希望客户只需要在初始加入时请求XYZ。之后,它应该只是从服务器监听XYZ。

这可能吗?我已经研究了阻塞/非阻塞和相关的方法。

1 个答案:

答案 0 :(得分:0)

理论上是的。这实际上取决于您如何设计客户端和服务器之间的对话框。例如,服务器需要监听并响应请求,例如“data =?”使用“data = XYZ”或者您要打包邮件。

服务器在启动时需要进行广播,当与服务器的连接丢失时,客户端需要进入监听模式。

要实现这一点,您可能会在客户端和服务器上使用线程,因此可能会使用一些序列化(信号量,互斥量等)。具体来说,您最终可能会遇到一个带有侦听套接字的线程和另一个带有发送套接字的线程。

总的来说,这是一项中等技能项目,但除非您之前编写过多线程应用程序或TCP / IP应用程序,否则这将是一次学习体验!

PS。我正在做类似的事情,只是为了好玩,所以有可能!