为什么我不能接受客户?

时间:2019-11-30 20:49:57

标签: python python-3.x sockets networking

我启动了一个连接到客户端的简单服务器,它在一个月前就工作了,但现在却没有。

主要

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()

启动服务器功能

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

为什么不接受客户?

2 个答案:

答案 0 :(得分:1)

我假设您正在尝试在本地主机中启动服务器。根据运行此代码的平台/操作系统,此地址可能无效。也许这已经改变了,您的基础平台。

为避免此问题,请使用

start_server((socket.gethostname(), 8200))

start_server(('127.0.0.1', 8200))

您可以在下面阅读有关使用0.0.0.0的更多信息。

https://www.howtogeek.com/225487/what-is-the-difference-between-127.0.0.1-and-0.0.0.0/

答案 1 :(得分:1)

我绑定了0.0.0.0和8200,但连接到127.0.0.1。
服务器
array_idx
客户
(client_socket, client_address) = start_server(('0.0.0.0', 8200))

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