您将如何编写 Linux 上的 TCPIP 服务器应用程序 运行 以同时绑定到多个端口?
How would you code a TCPIP Server application running on Linux to bind to more than port concurrently?
我很好奇有一种方法可以让 TCP/IP 服务器应用程序绑定并同时侦听多个端口上的连接请求。
一个典型的服务器会绑定到一个 IP 地址/端口,并在绑定的端口上监听连接请求,然后完成连接请求,即 111.111.111.001:3000
我想知道的是,在 Linux 世界中,您如何编写 TCP/IP 服务器应用程序以绑定到同一 IP 地址上的多个端口#,即 111.111.111.001:3000, 111.111.111.001:3001、111.111.111.001:3002 等等。
澄清一下,我指的是您的 运行 of the mill Linux 服务器,运行ning Debian 或 Ubuntu.
使用单独的套接字分别绑定到每个端口。使用 select
、poll
或 epoll
工具一次检查所有套接字上的传入连接。然后,一旦您收到有传入连接的通知,请在适当的套接字上使用 accept
来接受它。相同的方法可用于从多个套接字发送 to/receiving。
另一种方法是使用多线程。每个套接字都有自己的线程,只处理该套接字。
这两种方法各有优点,可以结合使用。使用哪一个取决于您的用例和编程风格。
我很好奇有一种方法可以让 TCP/IP 服务器应用程序绑定并同时侦听多个端口上的连接请求。
一个典型的服务器会绑定到一个 IP 地址/端口,并在绑定的端口上监听连接请求,然后完成连接请求,即 111.111.111.001:3000
我想知道的是,在 Linux 世界中,您如何编写 TCP/IP 服务器应用程序以绑定到同一 IP 地址上的多个端口#,即 111.111.111.001:3000, 111.111.111.001:3001、111.111.111.001:3002 等等。
澄清一下,我指的是您的 运行 of the mill Linux 服务器,运行ning Debian 或 Ubuntu.
使用单独的套接字分别绑定到每个端口。使用 select
、poll
或 epoll
工具一次检查所有套接字上的传入连接。然后,一旦您收到有传入连接的通知,请在适当的套接字上使用 accept
来接受它。相同的方法可用于从多个套接字发送 to/receiving。
另一种方法是使用多线程。每个套接字都有自己的线程,只处理该套接字。
这两种方法各有优点,可以结合使用。使用哪一个取决于您的用例和编程风格。