我启动了一个连接到客户端的简单服务器,它在一个月前就工作了,但现在却没有。
主要
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
为什么不接受客户?
答案 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通常过于严格