2017-09-02 1 views
-1

Voici le code du serveur et le client écrit pour Python 3Connect() fonction en Python ne fonctionne pas sous Linux

Code Serveur:

import sys 
from socket import socket, gethostbyname, AF_INET, SOCK_STREAM 

PORT_NUMBER = 5060 
SIZE = 1024 

hostName = gethostbyname('0.0.0.0') 

recvSocket = socket(AF_INET, SOCK_STREAM) 
recvSocket.bind((hostName, PORT_NUMBER)) 
recvSocket.listen(5) 



print("Listening for client...") 

(conn,addr)=recvSocket.accept() 



print ("Test server listening on port {0}\n".format(PORT_NUMBER)) 
print("Connected to client at address {0}\n".format(addr)) 
print("Connection is ",conn) 

Code client:

import sys 
from socket import socket,AF_INET,SOCK_STREAM,gethostbyname 

hostname=gethostbyname('0.0.0.0') 
print ("Creating") 
sendsocket=socket(AF_INET,SOCK_STREAM) 
print ("Connecting socket") 
sendsocket.connect(('192.168.4.39',5060)) 
print ("connected") 
data=input("Enter value") 
sendsocket.sendto(data.encode('utf-8'),(SEND_IP,SEND_PORT)) 

maintenant la situation à laquelle je suis confronté est la suivante:

1er Scénario o

code serveur est en cours d'exécution sur un système Windows et le code client est en cours d'exécution sur un système Linux

Résultat: code client obtient bloqué après l'impression "Connexion socket"

2e scénario

Le code du serveur s'exécute sur un système Linux et le code client s'exécuteSystèmede Windows

Résultat: Obtention d'une sortie comme prévu.

Pourquoi ce comportement se produit-il? La fonction connect() a-t-elle un problème ou le code rencontre-t-il un problème?

REMARQUE: Les systèmes serveur et client se trouvent sur le même réseau. 192.168.4.39 est l'adresse IP où le code du serveur est en cours d'exécution.

+0

Êtes-vous en cours d'exécution à la fois le code Windows et Linux ** à la même adresse IP **? Si non, alors pourquoi essayez-vous de vous connecter à la même machine dans le 1er scénario? –

+0

Et si vous * l'exécutez à la même adresse IP, vous ne pouvez pas attribuer la même adresse IP à deux entités. –

+0

Je n'ai pas bien compris votre question, mais je vais vous donner l'information indépendamment Le code du serveur est en cours d'exécution sur IP 192.168.4.39 Le code client fonctionne sur IP 192.168.4.57 –

Répondre

0

Assurez-vous d'abord que le client et le serveur sont bien connectés.

ensuite le faire manuellement comme ceci:

Ssocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM)

devrait fonctionner