我在同一个局域网上有两台计算机。第一台PC的IP地址为192.168.178.30,另一台PC的IP地址为192.168.178.26。 Ping,traceroute,telnet,ssh,两台PC之间的一切都可以正常工作。两台PC运行相同的操作系统 - CentOS 7,两台PC都具有相同的python版本2.7.5(使用python -V命令检查)。
我从计算机网络书中复制了简单的python代码。
client.py
from socket import *
serverName = '192.168.178.30'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input('Input lowercase sentence: ')
clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(1024)
print 'From Server:', modifiedSentence
clientSocket.close()
server.py
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('192.168.178.30',serverPort))
serverSocket.listen(5)
print 'The server is ready to receive'
while 1:
connectionSocket, addr = serverSocket.accept()
sentence = connectionSocket.recv(1024)
capitalizedSentence = sentence.upper()
connectionSocket.send(capitalizedSentence)
connectionSocket.close()
代码在同一台PC上运行时(服务器正在侦听localhost)。 当我在一台PC上运行客户端代码而在另一台PC上运行服务器代码时,我在客户端遇到此错误。
Traceback (most recent call last):
File "client.py", line 5, in <module>
clientSocket.connect((serverName,serverPort))
File "/usr/lib64/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 113] No route to host
有人可以帮忙吗?
答案 0 :(得分:5)
检查防火墙(在服务器上)。
答案 1 :(得分:3)
您应该bind
服务器套接字'0.0.0.0'
,而不是'192.168.178.30'
。
答案 2 :(得分:1)
我像Messa建议的那样停止了防火墙,现在它可以工作了。
service firewalld stop
我仍然不明白问题是什么。我甚至尝试使用不同的发行版。所有发行版都有严格的防火墙或其他东西。例如Ubuntu到Ubuntu,Ubuntu到CentOS,CentOS到Ubuntu我仍然遇到同样的问题(错误)。
答案 3 :(得分:0)
git clone --single-branch --branch <branchname> host:/dir.git
您应该使用
DataOutputStream.writeBytes(String)
答案 4 :(得分:0)
这些东西都不适合我。我只是将两个设备都连接到同一个WiFi网络,并且我的程序正常工作!