python - 为什么我不能接受客户?

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

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] The requested address is not valid in its context

客户端套接字

    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

为什么不接受客户端?

最佳答案

我绑定(bind)了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)) # 连接到服务器

正如我所解释的: 因为 0.0.0.0 不是要连接的目标地址,并且绑定(bind)到 127.0.0.1 通常限制太多

关于python - 为什么我不能接受客户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59120142/

相关文章:

python - PySimpleGui 输出标题栏名称问题

python - 如何从括号中删除所有内容,除非它包含给定的关键字

python - 当先前的值很重要时如何使用 `apply()` 或其他矢量化方法

c - 为什么我在 getaddrinfo() 返回的列表中得到 "localhost"的重复 addrinfo 对象?

networking - 套接字 API accept() 函数如何工作?

Java结构通过JNI映射C sockaddr_in结构

python - uWSGI应用程序找不到挂载点,但加载了html

Python 条件不起作用,其中包括 ifelse 子句

python - 您是否主要将Python用于其功能性或面向对象的功能?

python - 比较两个列表中的元素