【问题标题】:TCP/IP Socket Port ListeningTCP/IP 套接字端口监听
【发布时间】:2026-02-07 14:15:02
【问题描述】:

我有一个简单的问题,我可以运行两个 tcp 套接字侦听器吗 但是他们每个人都在不同的端口上监听,比如一台服务器,但要监听 2 个端口? 因为我在 tcp 编程和所有套接字编程方面都进退两难,这是我从未在网上读到的东西。

谢谢 这是我想做的模式This is The Diagram of the Connection 我们有一个 IP 和两个不同的连接端口

我希望这些信息对于这个问题来说是完整的,并且会让你以一种简单的方式理解我的想法。再次感谢

【问题讨论】:

  • 简单回答:是的 :) 实际上,您甚至必须为每个侦听器使用不同的端口,这就是您的服务在服务器上的寻址方式

标签: c# .net windows sockets


【解决方案1】:

我可以运行两个 tcp Socket 侦听器,但每个侦听器都在不同的端口上侦听,例如一台服务器,但要侦听 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);

【讨论】:

  • 感谢 THREAD 提供的信息和快速响应!
【解决方案2】:

有可能。

引用@BuckCherry

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

首先记住以下两条规则

  1. 套接字的主键:套接字由 {SRC-IP, SRC-PORT, DEST-IP, DEST-PORT, PROTOCOL} 不是由 {SRC-IP, SRC-PORT, DEST-IP, DEST-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。现在,服务器如何处理这两个套接字取决于服务器是单线程还是多线程(我会稍后解释)。重要的是一台服务器可以同时监听多个套接字。

More info here

【讨论】:

  • 感谢您对如何解决这个问题的意见和深入的回答!
  • 非常欢迎。如果其中一个答案最能满足您的问题,请接受(打勾)并为您认为有帮助的任何一个点赞。
  • 该网站说我需要 15 名声望,但我的 AC 还是新的,我不能这就是我写选项的原因
  • 捐赠了我的 +1