Le logiciel de mon serveur dit errno99: cannot assign requested address
Lors de l'utilisation d'une adresse IP autre que 127.0.0.1
Pour la liaison.
Mais si l'adresse IP est 127.0.0.1
, Cela fonctionne. Est-ce lié aux espaces de noms?
J'exécute mes codes serveur et client dans un autre programme python en appelant execfile()
]). Je suis en train de modifier le code source de la mininet. execfile ('server.py') execfile ('client1.py') et execfile ('client2.py'). Ainsi, dès que "Sudo mn --topo single, 3" est appelé avec la création de 3 hôtes mon les codes serveur et client seront exécutés.J'ai donné les codes serveur et client ci-dessous.
#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()
En résumé, voici ce que vous voudriez tester avec:
import socket
server = socket.socket()
server.bind(("10.0.0.1", 6677))
server.listen(4)
client_socket, client_address = server.accept()
print(client_address, "has connected")
while 1==1:
recvieved_data = client_socket.recv(1024)
print(recvieved_data)
Cela fonctionne en supposant quelques choses:
Essayez ce qui suit, ouvrez le menu Démarrer, dans le champ "recherche", tapez cmd
et appuyez sur Entrée. Une fois la console noire ouverte, tapez ping www.google.com
et cela devrait vous donner une adresse IP pour Google. Cette adresse est googles IP locale et ils se lient à cela et évidemment vous pouvez pas vous lier à une adresse IP appartenant à google.
Dans cet esprit, vous possédez votre propre jeu d’adresses IP. Vous avez d’abord l’adresse IP locale du serveur, puis l’adresse IP locale de votre maison. Dans l'image ci-dessous 192.168.1.50
est l'adresse IP locale du serveur auquel vous pouvez vous connecter. Vous possédez toujours 83.55.102.40
mais le problème est qu’il appartient au routeur et non à votre serveur. Donc, même si vous visitez http://whatsmyip.com et que cela vous indique que votre adresse IP est 83.55.102.40
ce n'est pas le cas, car il ne peut voir que votre pays d'origine et vous accédez à Internet par un routeur.
Pour que vos amis puissent accéder à votre serveur (lié à 192.168.1.50
) vous devez transférer le port 6677
à 192.168.1.50
et cela se fait dans votre routeur. En supposant que vous êtes derrière un.
Si vous êtes à l'école, d'autres dilemmes et routeurs sont susceptibles de vous poser problème.
Essayez comme ceci: server.bind (("0.0.0.0", 6677))
lorsque vous liez localhost
ou 127.0.0.1
, cela signifie que vous pouvez niquement vous connecter à votre service à partir de votre réseau local.
vous ne pouvez pas lier 10.0.0.1
parce que ne vous appartient pas, vous ne pouvez que bind ip appartenant à votre ordinateur
vous pouvez lier 0.0.0.0
_ parce que cela signifie toutes les adresses IP de votre ordinateur, de sorte que toutes les adresses IP peuvent se connecter à votre service s’ils le peuvent se connecter à l’une de vos adresses IP