首页 > 解决方案 > Python socket.send() 在 if 语句中不起作用

问题描述

我尝试编写一个简单的控制台菜单,如果我按 1 等,它将字符串“screenshot”发送到客户端。现在,当我按 1 时它会停止工作,如果我按Ctrl+C它只会发送空字节(b'')。

这是我的服务器:

import socket

s = socket.socket()
print ("Socket successfully created")
port = 2345
host = '0.0.0.0'
print ("socket binded to %s" %(port))

s.listen(5)
print ("socket is listening")

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((host, port))
    s.listen()
    conn, addr = s.accept()
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            choice = input('Choice: ')

            if choice == 1:
                conn.sendall("screenshot")
                s.close()
                break

这里是客户:

import socket

s = socket.socket()
port = 2345
host = 'xxx.xx.xx.xxx'

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((host, port))
    data = s.recv(1024)

print('Received', data)

接下来我可以尝试什么?

标签: pythonsocketsif-statementsocket.io

解决方案


推荐阅读