问题标签 [packets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
380 浏览

statistics - 找到具有相同有效负载的 TCP 数据包的概率?

今天早些时候,我与一位开发人员进行了一次讨论,重新识别在特定接口上发出的具有相同有效负载的 TCP 数据包。他告诉我,由于 TCP 数据包是在系统级别构建的方式,找到具有相同有效负载的 TCP 数据包(即使相同的数据被发送多次)的概率非常低。我知道这可能是由于系统的 MTU 设置(通常是 1500 字节)等原因,但我真正在看什么样的概率统计数据?是否有任何特定协议可以更轻松地识别匹配的有效负载?

0 投票
4 回答
5950 浏览

java - 在 1 个单个 UDP 数据报中发送多个数据

我正在做一个关于编写一个简单的 IM 系统的网络编程任务(很像最简单的 Windows Messenger 版本)。

规范规定我必须在单个数据报包中发送超过 4 个数据字段,它们是:

我想学习如何将所有这些数据打包到一个数据包中。

更新:到目前为止的帮助,但是说我有字符串句子和字符串,从正常的方式单独修补数据包将是

但是我怎样才能将“from”字符串与句子字符串一起附加到 sendData?

0 投票
3 回答
7809 浏览

c# - 当我通过 tcp 发送一个数据包时,它被分成两个数据包

我正在使用服务器-客户端模型在 C# 中开发一个应用程序,其中服务器向客户端发送一个带有位图的字节数组,客户端将其加载到屏幕中,向服务器发送“OK”,然后服务器发送另一个图像,依此类推。

图像缓冲区的长度取决于,通常在 60kb 和 90kb 之间,但我已经看到这并不重要。如果我将客户端和服务器放在同一台计算机上,使用 localhost,一切正常。服务器执行 beginSend,客户端执行 endReceive 并传输整个缓冲区。

但是,我现在正在无线网络中对此进行测试,结果是:

  • 服务器发送图像。
  • 调用客户端上的回调函数 data_received,但只有 1460 个字节要读取(MTU - 为什么?不应该只在 UDP 中?)
  • 再次调用客户端上的回调函数 data_received,现在使用缓冲区的其余部分(它是 1000 字节或 100 KB)...

总是这样,收到第一个 1460 字节的数据包,然后第二个数据包包含其余部分。

我可以通过加入接收到的两个字节数组来解决这个问题,但这似乎不对。我什至不确定为什么会这样。是不是对网络有一些限制?那么为什么 C# 不等待整个数据被传输呢?我的意思是,它是 TCP,我不应该担心它,对吧?

无论如何,任何帮助都会很棒!
干杯

0 投票
1 回答
263 浏览

delphi - 替换连接的数据包

如何替换连接数据包中的字符串?我用德尔福。

0 投票
3 回答
1482 浏览

c++ - 制作可变大小结构的方法

我需要制作一个包含标头、尾标和可变长度有效负载字段的数据包。到目前为止,我一直在使用向量作为有效载荷,所以我的结构是这样设置的:

当我尝试访问向量的成员时,我得到一个段错误,整个结构的 sizeof 给了我 32(在我向向量添加了大约 100 个元素之后。

这是一个好方法吗?什么是更好的?

我发现这篇文章 Variable Sized Struct C++ 他使用的是 char 数组,而我使用的是向量。

0 投票
1 回答
1386 浏览

c# - 如何通过 Web 服务代理将请求作为单个数据包发送(不要分块)

我正在尝试通过 C# 使用 Web 服务。在 Web 服务文档中,它声明 Web 服务仅接受作为单个数据包/流而不是多个数据包的请求。

有谁知道通过 Visual Studio 中的 Web 引用访问 Web 服务时如何更改此设置?

我在发送请求时收到 SOAPException“无法解析传入请求”错误,我认为这就是原因。

谢谢你的帮助!

-史蒂夫

0 投票
2 回答
840 浏览

iphone - 一直在诅咒数据包36小时,请帮助!

好的,这就是问题所在。我正在尝试通过苹果蓝牙发送网络数据包代码通过结构或任何东西发送。要发送的代码如下

}

如果有人可以用梳子完成这个并解释发生了什么,那将不胜感激。接下来是接收代码。

}

作为目标 c 的新手,我正在努力理解的是这一切是如何工作的,我如何访问我发送的字符串,因为所有努力记录它会导致程序崩溃。

以下是用于启动发送的代码:

任何帮助将不胜感激。谢谢你。

0 投票
2 回答
815 浏览

python - 如何将数据拆分为具有可变标头大小的相等大小的数据包..

我正在 python 中构建对等应用程序。它可以通过 UDP 工作。我有一个调用函数getHeader(packetNo,totalPackets),它返回该数据包的标头。根据标头的大小,我正在切割数据,将数据附加到标头并获得相同的数据包大小。

标头大小不是固定的,因为不同数字所消耗的长度不同,例如我正在为 packetNo=1 编写标头PACKET_NO=1,它的长度对于 packetNo 10、100 等

我目前没有在标头中包含任何数据包。我只包含数据包编号,我想包含它,但是在计算标头大小之前我怎么知道没有数据包,因为标头现在应该不包含数据包,并且 NO_OF_PACKETS=--- 可以是任何长度。

我可以通过一些函数传递它,该函数将计算数据包的数量,但这将类似于蛮力并且会消耗不必要的时间和处理能力。有什么聪明的方法可以做到吗?

0 投票
1 回答
334 浏览

c++ - 新的没有分配足够的内存?

好吧,我直接从网络中取出数据包并从中提取 TCP 流。

简而言之,这意味着剥离各种标头(例如,eth->IP->TCP->stream 数据)。

在我最终通过所有标题时调用的函数中,我遇到了一个奇怪的错误。

TCP流只是一个u_int32_t和一个u_char*指向数据包数据的副本。所以,当我使用 memcpy 时,它出现了段错误。
显然,要么我的指针无效,要么我弄乱了我的长度。

在这个特定数据包的情况下,数据的长度是 1380 字节(由 Wireshark 确认),因此 len 计算正确。

好的,所以我必须弄乱我的指针(但不是 NULL)。我做了以下实验:

所以,当我对 streamData 的引用太远(具体索引为 1236)时,我会出现段错误!但是 streamData 被实例化为:

我从 i=0 开始迭代 streamData,所以我没有跳过一堆数据。streamData 是u_char*并且offset(pkt)u_char*所以我不会弄乱我的类型。

在成功迭代 3000 多个其他数据包后,这在特定数据包上失败。转储文件是 27 megs,我有 4 gigs 的 ram,所以我认为我没有用完或任何东西......所以我不得不得出结论 new 没有分配足够的内存,但为什么?

0 投票
3 回答
14140 浏览

c# - C# 获取数据包数据

我一直在尝试编写一个可以嗅探 HTTP 标头的脚本。到目前为止,我已经将套接字绑定到端口 80,并且似乎收到了数据包,但我无法将它们转换为字符串形式。所有输出都是“E”连续。我之前将字节更改为十六进制,似乎有一些数据进入,但当前代码无法将字节更改为字符串。是否有其他解码字节的方法可以提供正确的字符串?