python连接到同一网络上的服务器

时间:2017-04-13 07:39:42

标签: python python-3.x sockets

我有一个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连接。 感谢所有的建议!我自己调查网络问题

2 个答案:

答案 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);