python - 为什么我不能接受客户?
问题描述
我启动了一个连接到客户端的简单服务器,一个月前它可以工作,但现在不行了。
主要的
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
为什么它不接受客户?
解决方案
我绑定了 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 通常过于严格
推荐阅读
- asp.net-core - 如何限制用户多次登录
- radius - 自由半径acct-terminate-cause未知
- bots - 如何在 Dialogflow 中捕获电话号码并向该号码发送短信?
- string - Autoit 2 字符串不相等,但它们是
- c++ - 如何在 C++ 中从 LAN 端口读取取之不尽的数据
- python - 为什么未来模块的这个警告没有被忽略?
- jasper-reports - 带有西班牙文字的 Jasper 报告
- asp.net - 如何在asp .net中比较两次
- reactjs - 使用 map 函数来展示带有引导卡的对象数组
- bluetooth-lowenergy - 从 Movesense 传感器读取广告数据包数据