我开发了一个基本的控制台应用程序,它将作为服务器-客户端工作。我的一般工作流程是,服务器启动客户端连接到服务器,一旦客户端发送一些东西,服务器将接收它并将其发送给所有客户端。目前我可以用我的代码来做到这一点,但我的问题是当我发回时我已经测试了 Socket.RemoteEndPoint 并且我看到了像 65xxx 这样的端口。就像我的第一个客户有 65020,第二个 65021 等等。我想知道为什么会发生这种情况,因为我使用 9001 端口连接并在我的计算机上收听 9001 端口。我做了一些研究,但找不到我的问题的解决方案。为什么我在使用 Socket.RemoteEndPoint 时会得到这些端口号?对我来说没关系,因为我在测试时不使用防火墙或任何东西,即使客户端从其他端口连接它' 只要它有效,我就可以,但是如果我有防火墙并且我只打开 9001 端口怎么办?那么我的基于客户端-服务器的程序会起作用吗?
1 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
就该机器上的服务器/防火墙而言,通常重要的是服务器端口。您通常不会根据客户端的端口应用任何过滤,正如我在评论中所说,它通常是一个ephemeral port。在大多数情况下,客户端代码不会指定本地端口或 IP 地址,而是让操作系统选择适当的值。
在Socket
类的LocalEndPoint
和RemoteEndPoint
使用“本地”和“远程”是指“自本代码正在运行的机器的视角”“是谁发起的连接VS谁是连接到”,不是。
因此,在服务器上,LocalEndPoint
将为您提供有关连接服务器端的信息,并为您提供有关连接RemoteEndPoint
客户端的信息。不管是谁发起了连接。
- 1 回答
- 0 关注
- 367 浏览
添加回答
举报
0/150
提交
取消