为了账号安全,请及时绑定邮箱和手机立即绑定

c# Socket.RemoteEndPoint 显示了我用来连接的不同端口

c# Socket.RemoteEndPoint 显示了我用来连接的不同端口

C#
Qyouu 2021-10-24 19:09:50
我开发了一个基本的控制台应用程序,它将作为服务器-客户端工作。我的一般工作流程是,服务器启动客户端连接到服务器,一旦客户端发送一些东西,服务器将接收它并将其发送给所有客户端。目前我可以用我的代码来做到这一点,但我的问题是当我发回时我已经测试了 Socket.RemoteEndPoint 并且我看到了像 65xxx 这样的端口。就像我的第一个客户有 65020,第二个 65021 等等。我想知道为什么会发生这种情况,因为我使用 9001 端口连接并在我的计算机上收听 9001 端口。我做了一些研究,但找不到我的问题的解决方案。为什么我在使用 Socket.RemoteEndPoint 时会得到这些端口号?对我来说没关系,因为我在测试时不使用防火墙或任何东西,即使客户端从其他端口连接它' 只要它有效,我就可以,但是如果我有防火墙并且我只打开 9001 端口怎么办?那么我的基于客户端-服务器的程序会起作用吗?
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

就该机器上的服务器/防火墙而言,通常重要的是服务器端口。您通常不会根据客户端的端口应用任何过滤,正如我在评论中所说,它通常是一个ephemeral port。在大多数情况下,客户端代码不会指定本地端口或 IP 地址,而是让操作系统选择适当的值。

Socket类的LocalEndPointRemoteEndPoint使用“本地”和“远程”是指“自本代码正在运行的机器的视角”“是谁发起的连接VS谁是连接到”,不是。

因此,在服务器上,LocalEndPoint将为您提供有关连接服务器端的信息,并为您提供有关连接RemoteEndPoint客户端的信息。不管是谁发起了连接。


查看完整回答
反对 回复 2021-10-24
  • 1 回答
  • 0 关注
  • 367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信