gpt4 book ai didi

c# - 当 UDP 当前正在发送数据包时,您的程序可以通过 TCP 接收信息吗?

转载 作者:可可西里 更新时间:2023-11-01 02:54:49 26 4
gpt4 key购买 nike

现在,我很想知道 - 如果我有一个程序通过 TCP 连接到服务器并且服务器向我的程序发送消息,但我同时发送 UDP 数据包,TCP 数据包会来找我?一切都在一个类中!

感谢您的帮助!

最佳答案

你的问题实际上是所有网络应用程序员都必须知道和考虑的几个问题的边界。

首先:所有从网络接收到的数据都存储在操作系统的内部缓冲区,等待读取。缓冲区不是无限的,所以如果您等待的时间足够长,一些数据可能会丢失。通常写入的数据 block 是单个数据包,但并非总是如此。您永远无法假设在 TCP/IP 通信中有多少数据可用于读取。另一方面,在 UDP 中,您必须始终读取单个数据包,否则数据将会丢失。您可以使用 recvfrom 读取 UDP 数据包,我建议使用它。

其次:使用阻塞和非阻塞方法是网络应用程序最重要的决定之一。网上有很多关于它的资料:C- Unix Sockets - Non-blocking read , what is the definition of blocking read vs non- blocking read?a non-blocking tutorial .

至于线程:编写多连接处理程序应用程序永远不需要线程。有时他们会简化你的代码,有时他们会让它运行得更快。有一些众所周知的使用线程的编程模式,比如在单独的线程中处理每个单独的连接。通常情况下,尤其是对于没有经验的程序员,使用线程只会导致奇怪的错误和令人头疼的问题。

我希望我的帖子能回答您的问题并解决我在另一个答案下一直进行的讨论。

关于c# - 当 UDP 当前正在发送数据包时,您的程序可以通过 TCP 接收信息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14478622/

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