Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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# TCP/UDP混合连接?_C#_Sockets_Tcp_Network Programming_Udp - Fatal编程技术网

C# TCP/UDP混合连接?

C# TCP/UDP混合连接?,c#,sockets,tcp,network-programming,udp,C#,Sockets,Tcp,Network Programming,Udp,我希望增强一个WPF应用程序,该应用程序目前在其网络内接收/广播UDP数据报,并使用桥接功能与不同子网上的应用程序的其他实例共享数据包 我基本上希望一个实例与另一个实例连接,然后在保持连接的同时广播UDP数据包。为此,我认为TCP连接至少可以用于握手和定期确认。但是,我不需要数据本身的TCP开销,数据本身可以在数小时或更长时间内每秒传输多次(无论两者连接的时间有多长) 鉴于这些要求,混合使用TCP进行握手/确认,但数据通过UDP发送(我假设TCP连接可以配置为无限期保持打开),或者将数据报作为T

我希望增强一个WPF应用程序,该应用程序目前在其网络内接收/广播UDP数据报,并使用桥接功能与不同子网上的应用程序的其他实例共享数据包

我基本上希望一个实例与另一个实例连接,然后在保持连接的同时广播UDP数据包。为此,我认为TCP连接至少可以用于握手和定期确认。但是,我不需要数据本身的TCP开销,数据本身可以在数小时或更长时间内每秒传输多次(无论两者连接的时间有多长)


鉴于这些要求,混合使用TCP进行握手/确认,但数据通过UDP发送(我假设TCP连接可以配置为无限期保持打开),或者将数据报作为TCP有效负载发送的额外开销可以忽略不计,这样做有意义吗?还是应该在UDP传输中实现syn/ack功能?这种连接有既定的标准吗?

我不太确定这种情况下管道的工作方式。如果在TCP连接收到ack之前无法转发下一个UDP数据报,则您的网络性能等于UDP和TCP连接中最慢的。在这种情况下,我认为简单地使用TCP而不使用UDP没有任何好处。TCP的目的实际上只是一种方法,一方询问“我是否应该继续发送您刚才请求的数据报?”另一方说“是的,我还在听”。如果在这个过程中遗漏了一条消息,那么它是无关紧要的——因此对数据本身的持续验证将被浪费。再考虑一下,我想最简单的方法可能就是建立某种“向该端点广播的请求”有效时间为n秒的UDP消息,在此时间之前必须重新发送,否则传输将停止。为什么要使用TCP?因为我需要连接机制。因此,作为一个在网络编程方面相当缺乏经验的人,我正在征求建议,是否应该在UDP传输中添加一个,或者使用已经有一个协议的协议来产生不必要的开销(不管这是多少,我很想知道)。我认为现在的答案显然是前者。