35得票5回答
如果TCP是面向连接的,为什么数据包会跟随不同的路径?

据我的了解,如果要设计互联网应用程序,我们应该使用连接导向服务或无连接服务之一,但不能同时使用。 互联网的连接导向服务是TCP,无连接服务是UDP,两者都驻留在Internet协议栈的传输层。 互联网的唯一网络层是IP,它是一种无连接服务。因此,这意味着无论我们设计什么应用程序,最终都会使...

22得票1回答
当数据以'1c'开头时,TCP数据包无法从俄罗斯传送到加拿大。

我们有一个TCP流协议,其中我们在数据负载前加上大小前缀,以便在接收时可以正确解码数据。这是相当标准的。 这对成千上万的人都有效。不幸的是,我们至少有4个客户报告存在连接问题,所有情况均出现在偏远国家。一位俄罗斯的客户能够帮助我们运行大量测试并将问题缩小范围。如果我们发送一个强制前缀大小为0...

21得票7回答
频繁调用malloc()和free()函数有多糟糕?

我正在发送一个文本文件 - 客户端和服务器将文本分成每个512字节的数据包,但有些数据包包含的文本大小不到最大值。在服务器端接收每个数据包时,我会调用malloc()重新构建一个字符串。这是一种糟糕的做法吗?是否更好保持一个可容纳最大长度的工作缓冲区并继续迭代,复制和覆盖其值? 好的@n.m...

20得票3回答
网络UDP广播设计?

我正在开发一对C++服务器/.NET客户端应用程序,其中我的服务器(在Linux上运行C++)会广播一条消息以向整个网络显示其存活状态,而我的.NET程序则监听数据包并解析以获取服务器的正常运行时间。 根据我所了解到的,要向广播地址发送常规UDP广播,我只需将数据包发送到192.168.0....

16得票8回答
面向对象网络编程

我写了许多网络系统,并且对网络通信有很好的理解。但是,我总是会编写一个巨大的 switch 语句作为数据包接收函数。这让我感到烦恼。我更愿意采用优雅的面向对象的方式来处理数据包接收,但每次我尝试想出一个好的解决方案时,都无法满足要求。 例如,假设你有一个网络服务器。它只是等待响应。数据包到达...

12得票2回答
如何从延迟和带宽计算数据包时间

我有一条连接了主机和交换机。 这条链接有带宽和延迟。如何计算从主机A传输2个大小为1KB的数据包到交换机1所需的时间? 以下是这个问题中涉及的第一个连接的图示: 注意:我只想手动计算这些值,想要知道计算这些问题的原则/规律。

9得票5回答
Android设备接收UDP广播时出现数据包丢失

为了让安卓设备接收来自服务器的UDP广播数据包,我使用了一个服务类并在一个线程中监听数据包。它可以成功接收数据包。然而,如果多个数据包同时从服务器发送,则会造成数据包丢失。 我甚至尝试使用队列,并在单独的线程中处理接收到的数据包,但仍无法接收数据包。我对网络编程完全不熟悉,希望得到任何帮助。...

9得票4回答
TCP/IP数据包和数据报

在从传输层(TCP)接收到一个分段并向网络层(IP)发送时,结果数据单元将是一个数据包。而当从传输层(UDP)接收到用户数据报时,结果数据单元将是一个数据报吗?

8得票4回答
USB主机何时需要在控制读传输结束时发送一个零长度的IN数据包?

我正在编写USB设备的代码。假设USB主机启动控制读取传输以从设备读取一些数据,请求的数据量(设置包中的wLength)是Endpoint 0最大数据包大小的倍数。那么,在主机接收到所有数据之后(以多个具有最大数据包大小的IN事务的形式),即使没有更多数据,它是否会发起另一个IN事务来查看是否...

7得票1回答
Java向Minecraft服务器发送握手数据包

我一直在开发Java程序,它基本上就像Minechat(文本聊天应用程序,用于查看聊天内容)。我从未真正涉足过网络方面,因此问题是如何正确地发送数据包。我目前的位置是与服务器进行握手。经过数小时的研究,我想出了以下代码,但它总是遇到“失败!(异常)”消息。对我来说,一切看起来都正确,但我可能完...