44 lines
1.3 KiB
Python
Executable File
44 lines
1.3 KiB
Python
Executable File
#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( )
|