TCP / IP套接字端口侦听

嗨,所以我有一个简单的问题,我可以运行两个TCP套接字监听器,但他们每个人都听一个不同的端口,如一台服务器,但2端口的听? 因为我在tcp编程和所有套接字编程上都有困难,而这是我从来没有在网上读过的东西。

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

我希望这个信息是充分的问题,并会给你一个轻松的方式来理解我的想法。 再次感谢

有可能的。

引用@BuckCherry

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

首先记住以下两条规则

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

  2. 操作系统进程和套接字映射:一个进程可以关联(可以打开/可以听)多个套接字,这可能是很多读者明显。

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

更多信息在这里

我可以运行两个TCP套接字监听器,但每个人都听一个不同的端口像一个服务器,但2端口的听?

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

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

并将相应的Socket绑定到它

 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);