Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使UDP成为面向连接的协议?_C#_Network Programming_Udp_Connection_Rudp - Fatal编程技术网

C# 使UDP成为面向连接的协议?

C# 使UDP成为面向连接的协议?,c#,network-programming,udp,connection,rudp,C#,Network Programming,Udp,Connection,Rudp,我制作了一个在线游戏,它使用UDP协议在客户端和服务器之间进行通信。但是,由于UDP连接较少,我无法检测客户端是否关闭了游戏或网络中发生了错误。因此,我需要使UDP成为面向连接的协议,或者至少检测网络错误。我怎样才能做到呢?TCP连接是如何面向的?正如您所说,UDP没有连接的概念。 因此,实现所需的唯一方法是在UDP之上自己实现所需的逻辑 例如,您可以让您的客户端定期使用包含唯一ID的UDP数据包“签入”服务器。 如果服务器不从客户端接收一段时间,它会考虑客户端死亡。首先,我理解你需要UDP因为

我制作了一个在线游戏,它使用UDP协议在客户端和服务器之间进行通信。但是,由于UDP连接较少,我无法检测客户端是否关闭了游戏或网络中发生了错误。因此,我需要使UDP成为面向连接的协议,或者至少检测网络错误。我怎样才能做到呢?TCP连接是如何面向的?

正如您所说,UDP没有连接的概念。 因此,实现所需的唯一方法是在UDP之上自己实现所需的逻辑

例如,您可以让您的客户端定期使用包含唯一ID的UDP数据包“签入”服务器。
如果服务器不从客户端接收一段时间,它会考虑客户端死亡。

首先,我理解你需要UDP因为效率-但是也许你可以尝试给TCP一个尝试?


否则,我会像@Phil Taprogge提到的那样做。每n秒发送一个由服务器标识的特定UDP包。如果服务器在3*n秒内未接收到连接,则很可能客户端已断开连接。

如果需要连接,请将其更改为使用TCP而不是UDP。我无法做到这一点,我需要速度。不能两者兼有。我可以两者兼有:TCP如何处理连接?我尝试过,而且速度非常慢。可能是因为包装尺寸不好。如果您收集数据并发送一个大的TCP包而不是小的TCP包,可能会提高吞吐量。我的下一个想法是建立一个TCP连接和一个UDP连接。TCP连接只是为了知道客户端是否已断开连接。我喜欢这个想法。它甚至还增加了在计算机之间发送TCP数据包的能力。你得在回答中加上这个。