我正在尝试编写一个脚本,当WASD按钮被按下时,它使用套接字通过LAN网络将其发送到服务器,这是客户端:
import socket
from pynput.keyboard import Listener
HOST = '127.0.0.1' # The server's hostname or IP address
PORT = 65432 # The port used by the server
import keyboard
def On_pressA():
print("dda")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'LEFT')
data = s.recv(1024)
print('Received', repr(data))
def On_pressW():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'FORWARD')
data = s.recv(1024)
print('Received', repr(data))
def On_pressS():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'BACKWARDS')
data = s.recv(1024)
print('Received', repr(data))
def On_pressD():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'RIGHT')
data = s.recv(1024)
print('Received', repr(data))
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
keyboard.add_hotkey('a', On_pressA)
keyboard.add_hotkey('d', On_pressD())
keyboard.add_hotkey('s', On_pressS())
keyboard.add_hotkey('w', On_pressW())
s.sendall(b'LEFT')
data = s.recv(1025)
当我按下A键时,它会打印出按键工作,就像它应该做的那样,但它不会将数据发送到服务器,这里是服务器:
import socket
HOST = '127.0.0.1'
PORT = 65432
loop = 0
while loop < 5:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Done', addr)
while True:
data = conn.recv(1024)
print(data)
if not data:
print("Nothing sent")
conn.sendall
我可能做错了什么,因为我是python的新手。我正试着用它来做一辆wifi遥控车。
发布于 2021-01-13 22:52:30
以下是问题所在:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
keyboard.add_hotkey('a', On_pressA)
keyboard.add_hotkey('d', On_pressD())
keyboard.add_hotkey('s', On_pressS())
keyboard.add_hotkey('w', On_pressW())
它应该是keyboard.add_hotkey('a', On_pressA())
而不是keyboard.add_hotkey('a', On_pressA)
(注意语句末尾的()
)
最终的代码应该看起来有点像:
import socket
from pynput.keyboard import Listener
HOST = '127.0.0.1' # The server's hostname or IP address
PORT = 65432 # The port used by the server
import keyboard
def On_pressA():
print("dda")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'LEFT')
data = s.recv(1024)
print('Received', repr(data))
def On_pressW():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'FORWARD')
data = s.recv(1024)
print('Received', repr(data))
def On_pressS():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'BACKWARDS')
data = s.recv(1024)
print('Received', repr(data))
def On_pressD():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'RIGHT')
data = s.recv(1024)
print('Received', repr(data))
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
keyboard.add_hotkey('a', On_pressA())
keyboard.add_hotkey('d', On_pressD())
keyboard.add_hotkey('s', On_pressS())
keyboard.add_hotkey('w', On_pressW())
s.sendall(b'LEFT')
data = s.recv(1025)
https://stackoverflow.com/questions/65702751
复制相似问题