这个库允许您使用Python2和Python3中的原始套接字实现自定义的第2层通信,同步和异步,有或没有回调。

rawsocketp的Python项目详细描述


#rawsocketpy

[api文档](https://raw socket python.readthedocs.io/en/latest/api.html)


raw socket是一个用于仅使用mac地址进行通信的第2层python库。

这允许您创建一个定制的以太网/wifi通信系统,该系统**不**使用IP或TCP/UDP,或调试自定义帧,如SERCOS III、PROFIBUS、ARP、PTP,…


python版本测试:

-[x]2.7.x
-[x]3.5.x


-[]Linux 14.04
-[x]Linux 16.04
-[]Linux 18.04
-[]windows 10
-[]mac osx


**优点:**



-低层
-不使用tcp-udp/ip
-非常简单
-可以广播
-MTU 1500
-异步服务器
-异步服务器
-有状态能力


**缺点:*


>
>
>
>-低层
-不使用tcp-udp/ip
-无加密
-无碎片
->
-**无需根根根**

->-低层
-低层
-低层
-乙r/>-mtu的1500






`` bash `` bash `
`很快
sudo-h pip install rawsocket py

` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `在一台计算机上进行快速测试:


``bash
rawsoc的sudo python-c"rowsocketpy-import-rawsocket
sock=rawsocket('wlp2s0',0xeefa)
etpy import rawsocket;导入时间
sock=rawsocket('wlp2
while true:
sock.send('boo')
print('boo已经被发送了)
time.sleep(0.5)
```
`

` ` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `输入
完整的官方列表可用这里是:https://regauth.standards.ieee.org/standards ra web/pub/view.html registries
direct link:https://standards.ieee.org/develop/regauth/ethertype/eth.csv
您可以使用任何您想要的类型,但是使用已经使用的类型可能会有意外的行为。
sock=rawsocket("wlp2s0",0xeefa)
sock.send("some data")broadcast"some d"以太类型为0xeefa
sock.send("个人数据",dest="\xaa\xbb\xxbc\xdd\xde\xee\xff"dest="\xaa\xbb\xbc\xdc\xdd\xde\xee\xff"的"个人数据"发送到以太类型为0xeefa
sock.send("其他数据",ether type="\xee\xff""\xee\xff"以太类型为"其他数据"的"其他数据"广播"其他数据"以太类型为0xeeff
```



<<
<

<

,您可以取消以下操作:

``python
从rawsocketpy import rawsocket,到_str

packet=sock.recv()
ses bytearray.

print(packet) # Pretty print
packet.dest # string "\xFF\xFF\xFF\xFF\xFF\xFF" or bytearray(b"\xFF\xFF\xFF\xFF\xFF\xFF")
packet.src # string "\x12\x12\x12\x12\x12\x13" or bytearray(b"\x12\x12\x12\x12\x12\x13")
packet.type # string "\xEE\xFA" or bytearray([b"\xEE\xFA"]
packegt.data # string "some data" 或者bytearray(b"一些数据"]


print(to_str(packet.dest)个人可读mac:ff:ff:ff:ff:ff:ff
print(to_str(packet.type,"");可读类型:eefa
````





无状态阻塞服务器


```` python







定义句柄(自身):
时间。睡眠(1)
打印(self.packet)

def finish(self):
print("end")


def setup(self):
print("begin")

rs=rawserver("wlp2s0",0xeefa,longtasktest)
rs.spin()


main()
```

有状态异步服务器

handler.setup()
handler.handle()



print("begin")

def main():
rs=rawasyncservercallback("wlp2s0",0xeefa,longtasktest,callback)
rs.spin()



欢迎使用以下功能:

-windows兼容性
-更多python版本和操作系统测试

\credits

-alexis paques-[@alexistm](https://github.com/alexistm/)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java窗口。位置和窗口。公开问题   java如何从存储在ArrayList<Node>中的动态生成的文本字段中获取文本?   java如何立即关闭InputStream?   如何重新启动Java程序以激活环境变量   java搜索字符串是否相差一个字符   java CFB模式输出与CTR输出相同;我做错什么了吗?   java如何在javaFX中将实例化对象添加到Stage   java如何在jtextarea上打印来自不同类的文本消息   java以编程方式确定IOException的原因?   限制Java NIO通道(文件或socket)中的可用内容   javajaxb与JDOM:是否可以使用JAXB更新xml文件   批处理文件到java测试   JavaFX:stage的作用是什么。可设置大小(false)是否会导致额外的页边距?   java有没有办法告诉IntelliJ按需堆叠参数?   java Seam会话范围的组件在下一个请求中消失   java Google Web Toolkit对开发复杂的java脚本有用吗?   安卓 studio java ArrayList正在检索最高值   java为什么递归地用随机数填充LinkedList时会出现StackOverflowException?