2014-05-02 3 views
0

Comment communiquez-vous avec un serveur distant, qui enverra toujours ses paquets de réponses à vos demandes, à l'IP/Port Tuple les demandes proviennent? En TCP vous aurez toujours besoin de deux prises. Un pour le serveur local et un pour le client local . Comme il est impossible de les lier à exactement le même port, disons que je lie la prise Server au port X et la prise Client au port Y. Maintenant, l'envoi d'une demande à l'aide de mon client local au serveur distant, provoquerait que la Server distant respectivement maintenant la client distant envoie sa réponse au port Y, mais mon serveur local écoute sur le port X.TCP sockets et l'occupation des ports

Je ne peux pas utiliser un seul socket pour l'envoi et la réception, comme dans UDP, ni je peux lier deux fois le même port.

+1

Pourquoi avez-vous besoin d'un serveur local? Si vous vous connectez à un serveur distant, vous créez simplement un client local qui envoie une requête et gère les écritures sur le socket. Regardez [this] (https://docs.python.org/2/library/socket.html#example) exemple de la documentation de la socket – plover

+0

Merci pour votre réponse. Parlez-vous de ceci: "data = s.recv (1024)" dans mon client local? Je pensais que ce serait un simple ack pour ma demande si la réponse du serveur distant est là, cela résoudrait mon problème, je n'ai pas mentionné cela. –

+1

Oui, la réponse serait écrite sur la même socket. Et vous pouvez le lire en utilisant 'recv()' – plover

Répondre

0

Vous n'avez pas besoin d'un serveur local. Le client peut envoyer et recevoir des données depuis/vers le serveur sur le même socket.

Consultez des exemples dans la documentation et socket exemple d'un client dans la documentation SocketServer