首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python原始套接字读取完整数据包

问使用python原始套接字读取完整数据包
EN

Stack Overflow用户
提问于 2018-05-05 13:00:25
回答 1查看 1.6K关注 0票数 1

我试图为UDP数据包创建一个原始套接字,仅用于使用转发表进行IP转发。我不是原始套接字编程方面的专家,我关心的是如何确保缓冲区中有完整的UDP数据包。

代码语言:javascript
复制
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)
s.bind(('0.0.0.0', 1337))
while True:
    packet = s.recvfrom(65535) #how to know that I read the complete packet not 50% or 1 and half packet 
    forwared_packet_function(packet) #here I will parse the packet change ip header and update the IP table and forward the packet

能告诉我如何用recvfrom()阅读一整包吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-05 14:56:04

我也不是原始套接字编程的专家,但我对网络有一定的了解。

第一题:

怎样才能知道我读的整包不是50%还是1/5包?

答:你不能。它没有像TCP那样的“序列号”或“确认号”。

第二个问题:

能否告诉我如何通过recvfrom()读取一个完整的数据包?

答:试试看

代码语言:javascript
复制
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)
s.bind(('0.0.0.0', 1337))
while True:
    packet = s.recvfrom(65535).decode()    #decode packet
    forwared_packet_function(packet)
    print(packet)   #print packet to read
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50189727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档