Python 服务器客户端 WinError 10057

use*_*994 5 sockets network-programming python-3.x

我正在使用该socket模块在 Python 3.3 中制作服务器和客户端。我的服务器代码工作正常,但此客户端代码返回错误。这是代码:

import socket
import sys
import os

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_address = ('192.168.1.5', 4242)
sock.bind(server_address)

while True:
    command = sock.recv(1024)
    try:
        os.system(command)
        sock.send("yes")
    except:
        sock.send("no")
Run Code Online (Sandbox Code Playgroud)

这是错误:

Error in line: command = sock.recv(1024)
OSError: [WinError 10057] A request to send or receive data was disallowed because the socket is not connected  and (when sending on a datagram socket using a sendto call) no address was supplied
Run Code Online (Sandbox Code Playgroud)

这到底是怎么回事?

Kni*_*fNi 2

看起来您对实际连接到服务器的时间感到困惑,因此请记住,您始终首先绑定到本地端口。因此,这一行:

server_address = ('192.168.1.5', 4242)
Run Code Online (Sandbox Code Playgroud)

实际上应该读:

server_address = ('', 4242)
Run Code Online (Sandbox Code Playgroud)

然后,在无限循环之前,输入以下代码行:

sock.connect(('192.168.1.5', 4242))
Run Code Online (Sandbox Code Playgroud)

你应该可以走了。祝你好运!

编辑:我想我应该更加小心“总是”这个词。在这种情况下,您需要首先绑定到本地套接字。