44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
|
#coding:utf-8
|
|||
|
import os
|
|||
|
from socket import *
|
|||
|
|
|||
|
NULL_CHAR = chr(0)
|
|||
|
|
|||
|
def write_report(report):
|
|||
|
with open('/dev/hidg0','rb+') as fd:
|
|||
|
fd.write(report)
|
|||
|
|
|||
|
#''代表服务器为 localhost
|
|||
|
myHost = ''
|
|||
|
#在一个非保留端口号上进行监听
|
|||
|
myPort = 50009
|
|||
|
#设置一个TCP socket对象
|
|||
|
sockobj = socket(AF_INET, SOCK_STREAM)
|
|||
|
#绑定端口号
|
|||
|
sockobj.bind((myHost, myPort))
|
|||
|
#监听,允许5个连结
|
|||
|
sockobj.listen(5)
|
|||
|
#直到进程结束时才结束循环
|
|||
|
while True:
|
|||
|
#等待客户端连接
|
|||
|
connection, address = sockobj.accept( )
|
|||
|
#连接是一个新的socket
|
|||
|
print ('Server connected by', address)
|
|||
|
while True:
|
|||
|
#读取客户端套接字的下一行
|
|||
|
data = connection.recv(1024)
|
|||
|
#如果没有数量的话,那么跳出循环
|
|||
|
if not data: break
|
|||
|
if data == "hid open":
|
|||
|
os.popen('ls /sys/class/udc | xargs echo > /sys/kernel/config/usb_gadget/g1/UDC')
|
|||
|
print("hid open")
|
|||
|
elif data == "hid close":
|
|||
|
os.popen('echo > /sys/kernel/config/usb_gadget/g1/UDC')
|
|||
|
print("hid close")
|
|||
|
else:
|
|||
|
write_report(data)
|
|||
|
#发送一个回复至客户端
|
|||
|
connection.send('server => ' + data)
|
|||
|
#当socket关闭时eof
|
|||
|
connection.close( )
|