Simple telnet serveur de chat en Python
Que j'ai lu sur les sockets et a trouvé un bon exercice pour essayer: un simple serveur de chat qui se fait l'écho d'entrée. Cela semble être un bon exercice et j'ai trouvé plusieurs exemples tels que chatserver5.py et certains DONC questions. Le problème est que je ne peut se connecter lors de l'utilisation de telnet localhost 51234
et pas telnet 192.168.1.3 51234
(où 192.168.1.3 est l'adresse IP du réseau de mon "serveur"). Inutile de dire, je ne peux pas connecter depuis une autre machine sur mon réseau. J'obtiens le résultat suivant:
Trying 192.168.1.3...
telnet: connect to address 192.168.1.3: Connection refused
telnet: Unable to connect to remote host
Voici mon code:
import socket, threading
HOST = '127.0.0.1'
PORT = 51234
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(4)
clients = [] #list of clients connected
lock = threading.Lock()
class chatServer(threading.Thread):
def __init__(self, (socket,address)):
threading.Thread.__init__(self)
self.socket = socket
self.address= address
def run(self):
lock.acquire()
clients.append(self)
lock.release()
print '%s:%s connected.' % self.address
while True:
data = self.socket.recv(1024)
if not data:
break
for c in clients:
c.socket.send(data)
self.socket.close()
print '%s:%s disconnected.' % self.address
lock.acquire()
clients.remove(self)
lock.release()
while True: # wait for socket to connect
# send socket to chatserver and start monitoring
chatServer(s.accept()).start()
Je n'ai aucune expérience à l'aide de telnet ou de sockets. Pourquoi je ne peux pas me connecter à distance et comment puis-je résoudre ce problème afin que je puisse?
OriginalL'auteur styfle | 2011-06-27
Vous devez vous connecter pour publier un commentaire.
Si vous définissez
HOST = ''
, alors vous serez en mesure de vous connecter à partir de n'importe où. Maintenant, vous êtes le liant à127.0.0.1
, qui est le même quelocalhost
.Oui, vous pouvez telnet à partir de n'importe quel OS pour tester ce serveur.
Je pense que Telnet est utilisé pour la connexion à distance, donc, il y a un risque pour la sécurité de l'exécution de cette sur ma machine?
Votre serveur n'est pas un serveur telnet, si vous êtes ok.
Alors pourquoi ce travail?
OriginalL'auteur Ravi
Remplacer
HOST = '127.0.0.1'
avecHOST = '192.168.1.3'
ouHOST = ''
. Cela permettra de vous lier quant à votre IP SORTANTS et non votre propre localhostOriginalL'auteur Vogon Jeltz