首页 > 解决方案 > 为什么我不能接受客户?

问题描述

我启动了一个连接到客户端的简单服务器,一个月前它可以工作,但现在不行了。

主要的

def main():
    (client_socket, client_address) = start_server(('0.0.0.0', 8200))

    print("online")
    menu = """
        enter the mode wanted out of:
        write,
        random,
        cal,
        file,
        close to terminate connection"""
    menu = menu.encode()
    main_menu(client_socket, menu)
    client_socket.close()
    server_socket.close()


if __name__ == '__main__':
    main()

start_server 函数

def start_server(addr):
    global server_socket
    server_socket = socket.socket()
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server_socket.bind(addr)
    server_socket.listen(1)
    (client_socket, client_address) = server_socket.accept()
    return client_socket, client_address

服务器没有运行server_socket.accept(),我为客户端收到此错误:

OSError: [WinError 10049] 请求的地址在其上下文中无效

客户端套接字

    my_socket = socket.socket()  # creates the socket
    my_socket.connect(('0.0.0.0', 8200))  # connects to the server
    choose_mode(my_socket)  # main menu

为什么它不接受客户?

标签: pythonpython-3.xsocketsnetworking

解决方案


我绑定了 0.0.0.0 和 8200,但连接到了 127.0.0.1。
服务器
(client_socket, client_address) = start_server(('0.0.0.0', 8200))
客户端
my_socket.connect(('127.0.0.1', 8200)) # connects to the server

正如我所解释的那样:因为 0.0.0.0 不是要连接的目标地址,并且绑定到 127.0.0.1 通常过于严格


推荐阅读