首页 > 解决方案 > Can s 进程在两种不同类型的套接字上进行通信

问题描述

进程是否可以充当服务器并侦听两种不同类型的套接字(TCP unix 套接字和 TCP AF_INET 套接字),并且进程也可以充当客户端并打开两种不同类型的套接字(TCP unix 套接字和 TCP AF_INET 套接字)并连接到具有相应类型套接字的服务器。

我有两个进程,一个作为服务器,一个作为客户端,在同一台机器上运行。套接字是 Unix 流套接字类型。现在我希望我的服务器和客户端进程打开一对新的 TCP AF_INET 套接字并通过新的套接字对进行通信,同时保持先前(Unix 套接字)上的通信完好无损。

为此,我将在服务器上为 TCP AF_INET 服务器套接字启动一个新线程。在客户端,我还将为 TCP AF_INET 客户端套接字启动一个新线程。有没有可能有这样的系统。我将在 linux 操作系统上为此编写 ac 代码。

标签: clinuxsockets

解决方案


是的。

服务器可以(应该)使用 select 函数来监控一组套接字;插座可以是不同类型的。然后服务器阻塞 select() 调用,唤醒东一个套接字上可用的任何可读数据。

客户端进程可能使用多个线程,每个线程都有自己的套接字与服务器通信。客户端也可以使用同一执行上下文(线程)中的所有套接字,但这取决于客户端应该执行的任务的性质。换句话说,这需要软件设计和架构。


推荐阅读