gpt4 book ai didi

c# - 关于 C# UDP 套接字

转载 作者:行者123 更新时间:2023-11-30 16:34:00 24 4
gpt4 key购买 nike

  • 我应该使用 C# 中的 UDP 套接字连接到外部服务器..
  • 我无法理解服务器使用说明中的这两行:

“强制使用专用套接字。”

“如果服务器失去与客户端的 UDP 连接,它将……”

我以为UDP套接字是无连接的!那么“失去连接”是什么意思呢?以及如何避免呢?是否有已知的方法来确保“专用套接字”?

谢谢

最佳答案

"Use of dedicated sockets is enforced."

对我来说,这就是说,为每个连接创建一个唯一的套接字,并在整个连接中使用它。

编辑:只是从服务器的角度对此进行扩展。

UDP sockets are not identified by the remote address, but only by the local address, although each message has an associated remote address. (source).

这样服务器就可以区分每条消息来自哪个客户端。因为远程地址由 ip 地址和端口组合组成,所以您应该在服务器的整个通信过程中使用相同的套接字。这是因为如果不这样做,下次更改底层套接字时可能会分配到不同的端口。

"If the server looses UDP connectivity with the client, it will ..."

有可能失去 UPD 连接,例如连接中的任一端点丢失,假设我去服务器并拔下插头?

编辑2:丹·布莱恩特在评论中提出了一个很好的观点,这与我所说的有关。

One thing worth noting is that it's possible for a call to a UDP socket to throw a SocketException with SocketError.ConnectionReset as the error code. UDP does not have any sort of session with structured connect/disconnect, but it does use a dynamically-assigned remote port to allow replies, which is a kind of 'connection'.

关于c# - 关于 C# UDP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2757868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com