我的服务器软件在绑定IP地址时,如果使用除 127.0.0.1
以外的其他IP地址,则会显示errno99: cannot assign requested address
错误。
但是如果使用IP地址为 127.0.0.1
,则可以正常运行。
这与名称空间有关吗?
我通过调用 execfile()
在另一个Python程序中执行我的服务器和客户端代码。
实际上,我正在编辑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()
execfile()
来执行“服务器”(顺便问一下,使用execfile()
的原因是什么?)) - Torxed10.x.x.x
、172.16.x.x
、192.168.x.x
或127.0.0.x
是本地网络。但遗憾的是,83.127.224.44
是一个本地地址(而且这是你想要绑定的本地地址),因为它是分配给你的计算机的地址。 (也就是说,你不能bind()
到“www.google.com”,因为你不拥有它,但如果你拥有“www.made-up-example.com”,你就可以绑定到那个地址,一旦你理解了这个基本概念,你需要绑定到made-up-example.com的*IP*而不是地址本身)。 - Torxed