首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >套接字不会通过LAN发送数据

套接字不会通过LAN发送数据
EN

Stack Overflow用户
提问于 2021-01-13 21:17:03
回答 1查看 39关注 0票数 2

我正在尝试编写一个脚本,当WASD按钮被按下时,它使用套接字通过LAN网络将其发送到服务器,这是客户端:

代码语言:javascript
运行
复制
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键时,它会打印出按键工作,就像它应该做的那样,但它不会将数据发送到服务器,这里是服务器:

代码语言:javascript
运行
复制
    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遥控车。

EN

回答 1

Stack Overflow用户

发布于 2021-01-13 22:52:30

以下是问题所在:

代码语言:javascript
运行
复制
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) (注意语句末尾的() )

最终的代码应该看起来有点像:

代码语言:javascript
运行
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65702751

复制
相关文章

相似问题

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