我的服务器软件使用errno99: cannot assign requested address
以外的ip地址进行绑定时会显示127.0.0.1
。
但如果IP地址是127.0.0.1
,它就可以工作。
它与名称空间有关吗?
我正在另一个python程序中通过调用execfile()
来执行服务器和客户端代码。
实际上,我正在编辑mininet源代码。我编辑了net.py,在其中使用了execfile('server.py')execfile('client1.py')和execfile('client2.py')。因此,只要调用“sudo mn--topo single,3”并创建3个主机,我的服务器和客户端代码就会执行。下面是我的服务器和客户端代码。
#server code
import select
import socket
import sys
backlog = 5
size = 1024
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("10.0.0.1",9999))
server.listen(backlog)
input = [server]
running = 1
while running:
inputready,outputready,exceptready = select.select(input,[],[])
for s in inputready:
if s == server:
client, address = server.accept()
input.append(client)
else:
l = s.recv(1024)
sys.stdout.write(l)
server.close()
#client code
import socket
import select
import sys
import time
while(1) :
s,addr=server1.accept()
data=int(s.recv(4))
s = socket.socket()
s.connect(("10.0.0.1",9999))
while (1):
f=open ("hello1.txt", "rb")
l = f.read(1024)
s.send(l)
l = f.read(1024)
time.sleep(5)
s.close()
这样试试: server.bind((“0.0.0.0”,6677))
把事情简单化这是你想要测试的:
假设有几件事:
还要注意IP地址的基本概念:
尝试以下操作,打开“开始”菜单,在“搜索”字段中键入
cmd
,然后按回车键。 一旦黑色控制台打开,键入ping www.google.com
,这将为您提供google的IP地址。这个地址是google本地IP,它们绑定到这个地址,显然您可以而不是绑定到google拥有的IP地址。考虑到这一点,您拥有自己的一组IP地址。 首先你有服务器的本地IP,然后你有你家的本地IP。 在下图中,
192.168.1.50
是可以绑定到的服务器的本地IP。 您仍然拥有83.55.102.40
,但问题是它属于路由器,而不是您的服务器。所以,即使你访问http://whatsmyip.com并告诉你你的IP是83.55.102.40
,情况并非如此,因为它只能看到你来自哪里。。你正在通过路由器访问你的互联网。为了让您的朋友访问您的服务器(绑定到
192.168.1.50
),您需要将端口6677
转发到192.168.1.50
,这在路由器中完成。 假设你在后面。如果你在学校里,很可能还有其他的困境和麻烦。
当您绑定
localhost
或127.0.0.1
时,这意味着您只能从本地连接到服务。您不能绑定
10.0.0.1
,因为它不属于您,您只能绑定计算机拥有的ip您可以绑定
0.0.0.0
,因为这意味着您计算机上的所有ip,因此任何ip都可以连接到您的服务,如果它们可以连接到您的任何ip相关问题 更多 >
编程相关推荐