用python怎么发送tcp协议的16进制数据包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python怎么发送tcp协议的16进制数据包相关的知识,希望对你有一定的参考价值。

参考技术A 一般字符串可以直接发,不是可读的也可以用"\x33\x22"这种发。
如果是一列数之类的,可以用struct的pack打包成字符串发送。

tcp粘包是怎么产生的?

1、什么是 tcp 粘包?

发送方发送的多个数据包,到接收方缓冲区首尾相连,粘成一包,被接收。

 

2、原因

TCP 协议默认使用 Nagle 算法可能会把多个数据包一次发送到接收方。

应用程读取缓存中的数据包的速度小于接收数据包的速度,缓存中的多个数据包会被应用程序当成一个包一次读取。

 

3、处理方法

发送方使用 TCP_NODELAY 选项来关闭 Nagle 算法

数据包增加开始符和结束,应用程序读取、区分数据包。

在数据包的头部定义整个数据包的长度,应用程序先读取数据包的长度,然后读取整个长度的包字节数据,保证读取的是单个包且完整。

 

参考


 


技术图片

 

所有资源资源汇总于公众号

技术图片

 

 

以上是关于用python怎么发送tcp协议的16进制数据包的主要内容,如果未能解决你的问题,请参考以下文章

TCP/IP协议 怎么用JAVA发送和接收二进制数据 要具体实例

基于MFC的TCP报文通信如何实现16进制的发送

我用udp发送一个16进制包,接收端怎么解析。

VB中发送16进制数据包?

Python学习笔记__16.3章 UDP编程

串口发送16进制1234,用python接收的是'\x01\x01\x03\x04'但用python再怎么转换成原来的数据1234呢?