TCP/IP套接字端口监听

本文关键字:监听 套接字 IP TCP | 更新日期: 2023-09-27 18:04:56

我有一个简单的问题,我可以运行两个tcp Socket侦听器吗但它们都监听不同的端口比如一个服务器,两个端口监听?因为我有两难的tcp编程和所有套接字编程,这是我从来没有在网上读到的东西。

谢谢这是我想要做的图式,这是连接图我们有一个IP和两个不同的连接端口

我希望这些信息是完整的问题,并将给你一个容易理解的方法我的想法。再次感谢

TCP/IP套接字端口监听

我可以运行两个tcp套接字侦听器,但每个侦听器都在不同的端口上侦听,如一个服务器,但2个端口要侦听?

是的,你可以。只需声明两个不同的IPEndPoint

IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 8888);
IPEndPoint localEndPoint2 = new IPEndPoint(ipAddress, 8880);

并将相应的套接字绑定到它

Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket s2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s1.Bind(localEndPoint);
s2.Bind(localEndPoint2);

这是可能的。

引用@BuckCherry

. .两个客户端可以连接到相同的服务器端口,因为我们可以为每个客户端分配不同的套接字(因为客户端IP肯定不同)。同一个客户端也可以有两个套接字连接到同一个服务器端口-因为这些套接字的SRC-PORT不同…

首先记住以下两条规则:

  1. 套接字主键:套接字由{SRC-IP,SRC-PORT, DEST-IP, DEST-PORT, PROTOCOL} not by {SRC-IP, SRC-PORT,协议是套接字的重要组成部分定义。

  2. OS进程&套接字映射:一个进程可以关联(可以打开/可以监听)多个套接字,这对许多读者来说可能是显而易见的。

示例1:两个客户端连接到同一个服务器端口表示:socket1 {SRC-A, 100, DEST-X,80, TCP}和socket2{SRC-B, 100, DEST-X,80, TCP}。这意味着主机A连接到服务器X的80端口,另一个主机B也连接到相同的服务器X到相同的80端口。现在,服务器如何处理这两个套接字取决于服务器是单线程的还是多线程的(稍后我将对此进行解释)。重要的是一个服务器可以同时监听多个套接字。

更多信息在这里