【发布时间】:2010-07-01 15:51:51
【问题描述】:
我正在尝试使用 UDP 在 C# 上编写客户端-服务器控制台应用程序。 我有一个问题。 因此,当我从客户端向服务器发送命令时 - 服务器必须具有读取的 IP 地址。 客户端必须从服务器获取一些设置,但在这种情况下客户端也必须有真实的 IP 地址。游戏等其他应用不需要客户端真实IP。我必须怎么做才能让它以这种方式工作?
【问题讨论】:
我正在尝试使用 UDP 在 C# 上编写客户端-服务器控制台应用程序。 我有一个问题。 因此,当我从客户端向服务器发送命令时 - 服务器必须具有读取的 IP 地址。 客户端必须从服务器获取一些设置,但在这种情况下客户端也必须有真实的 IP 地址。游戏等其他应用不需要客户端真实IP。我必须怎么做才能让它以这种方式工作?
【问题讨论】:
游戏要么使用具有公共 IP 的主机作为服务器,要么使用服务器本身作为服务器。
具有私有 IP 的客户端与服务器建立连接,然后服务器使用该连接将数据返回给客户端(类似于浏览器)。
在 C# 中,您可以将 NetworkStream 类用于 TCP,将 UdpClient 用于 UDP。
【讨论】:
UdpClient 就是这样!
如果我正确理解您的问题:您可以使用Socket.ReceiveFrom,它会告诉服务器发送请求的客户端的 IP 地址。
【讨论】:
服务器使用 Socket.BeginReceiveFrom / EndReceiveFrom 获取客户端的 IP 地址。如果服务器需要回复,则使用 IPEndPoint。
【讨论】: