我有一个server.py和一个client.py。
如果我使用相同的端口和主机127.0.0.1在同一台计算机上运行它,它可以正常工作。
我将另一台笔记本电脑连接到同一网络。我得到了我的本地IP地址129.94.209.9并将其用于服务器。在另一台笔记本电脑上,我尝试连接到服务器,但我不能。
这是我的代码问题,网络还是我只是使用了错误的IP地址?
Server.py
HOST = '129.94.209.9'
PORT = 9999
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((HOST, PORT))
server_socket.listen(10)
sockfd, addr = server_socket.accept()
send and receive messages etc....
Client.py
HOST = '129.94.209.9'
PORT = 9999
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.connect((HOST, PORT))
except:
print("Cannot connect to the server")
send and receive messages etc...
客户端打印"无法连接到服务器"
谢谢!
更新:感谢您的评论
1)我确实做了sockfd,addr = server_socket.accept()抱歉,我忘了添加它,在代码中还有几行。
2)错误是:[Errno 11]资源暂时不可用
3)Ping确实有效
编辑:我现在正在使用以太网电缆将两台计算机插入同一网络。不知道为什么当他们彼此相邻时,我的胜利工作与wifi连接。 感谢所有的建议!我自己调查网络问题
答案 0 :(得分:1)
使用以下代码(我的IP地址而不是你的IP地址),我看到了预期的行为。
so8srv.py:
import socket
HOST = '192.168.33.64'
PORT = 9999
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((HOST, PORT))
server_socket.listen(10)
print("Listening")
s = server_socket.accept()
print("Connected")
so8cli.py:
import socket
HOST = '192.168.33.64'
PORT = 9999
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.connect((HOST, PORT))
except Exception as e:
print("Cannot connect to the server:", e)
print("Connected")
当我运行它时,服务器会打印"Listening"
。当我然后运行客户端时,它和服务器都打印"Connected"
。
您会注意到,与您的代码不同,我的客户端不仅仅针对引发的任何异常打印相同的诊断,而是报告异常。作为合理的练习,您应该避免使用except
个子句,因为无论异常是由编程错误还是用户操作(如KeyboardInterrupt
引起的),您的程序都会采取相同的操作。
答案 1 :(得分:0)
还尝试使用此结构来获取IP地址:
ProductList.Padding(10).Margin(20);