如何查找分配给 UDP 客户端的端口号(在 .net/C# 中)?
如果我使用创建套接字
var socket = new UdpClient(0,AddressFamily.InterNetwork);
然后如何找到套接字的端口?
我可能很愚蠢,但我在 MSDN/Google 上运气不佳(可能是因为现在是星期五 4:42,阳光明媚)。
背景:
我想要做的是找到一个开放的端口,然后报告给另一个进程在该端口上将消息转发给我。可能有多个客户端,所以我不想使用固定端口。
谢谢。
If I create a socket using
var socket = new UdpClient(0,AddressFamily.InterNetwork);
How do I then find the port of the socket?
I'm probably being daft, but I'm not having luck in MSDN/Google (probably because it is 4:42 on a Friday and the sun is shining).
Background:
What I want to do is find an open port, and then report to another process to forward messages to me on that port. There may be multiple clients, so I don't want to used a fixed port.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
UdpClient 是 Socket 类的包装器,它通过 LocalEndPoint 属性公开其绑定到的端点。由于您使用的是 UDP/IP 客户端,因此它是一个具有所需端口属性的 IPEndPoint:
UdpClient is a wrapper around the Socket class which exposes the endpoint it's bound to through the LocalEndPoint property. Since you're using an UDP/IP client it's an IPEndPoint which has the desired Port property:
对于那些需要使用 RAW 套接字的人(像我一样),这里是解决方法。
目标:
预期:(socket.LocalEndPoint as IPEndPoint).Port
问题
解决方案:
注意:
local
IPEndPoint变量来了解端口,因为套接字将始终报告零。代码:
For those (like me) who need to use a RAW socket, here is the workaround.
goal:
expected: (socket.LocalEndPoint as IPEndPoint).Port
problems
solution:
CAVEAT:
local
IPEndPoint variable to know the port, as the socket will always report zero.code: