Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python连接到同一网络上的服务器_Python_Python 3.x_Sockets - Fatal编程技术网

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

python连接到同一网络上的服务器,python,python-3.x,sockets,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.socke

我有一个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\u socket.accept(),很抱歉我忘了添加它,它在代码的下面几行

2) 错误为:[Errno 11]资源暂时不可用

3) 平确实有用

编辑:当我通过以太网电缆将两台计算机插入同一个网络时,它现在可以工作了。我不知道为什么我的手机不能正常工作,因为它们紧挨着彼此连接到wifi。 谢谢你的建议!我将亲自调查网络问题

使用以下代码(当然是我的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")
当我运行它时,服务器会打印
“侦听”
。然后,当我运行客户端时,它和服务器都会打印“已连接”


您会注意到,与您的代码不同,我的客户机不只是为引发的任何异常打印相同的诊断,而是报告异常。作为一种合理的做法,您应该避免使用裸露的
except
子句,因为无论异常是由编程错误还是由用户操作(如
键盘中断)引起的,您的程序都会执行相同的操作。请尝试使用此结构来获取IP地址:

HOST=socket.gethostbyname(socket.gethostname())

首先,您应该删除
try
/
Exception
或重新引发异常以查看实际的错误消息。您是否尝试过将
Exception:
更改为类似
Exception的内容,例如:
。这将使您能够更好地了解有关异常的描述,包括
print(ex)
,并可能提供更多信息
ping
从一台机器到另一台机器是否有效?是的,我尝试过这些,更新了问题如果在
server.py
中使用
HOST='0.0.0'
会发生什么情况?通常会返回本地主机地址请注意。在一台计算机上,您应该有
gethostbyname()
,在另一台计算机上,您应该有“0.0.0.0”。否则,两者之间的联系将失效。这不是真的,听起来像是货物崇拜信息<代码>'0.0.0.0'
在服务器套接字上用于侦听所有可用接口。只在一个由其IP地址指定的接口上侦听是完全有效的。完全没有必要使用主机名——它们只是为人类用户提供方便。谢谢。看起来我们的代码都不错,但我的无线接入点或路由器肯定做了一些不好的事情。现在,当我使用以太网电缆而不是WiFi连接笔记本电脑时,它就可以工作了