2017-09-22 20 views
1

Pour une raison quelconque, je ne peux pas sembler être capable de créer un hôte ou un client où le client peut toujours envoyer un message à l'hôte à chaque fois. Je peux seulement envoyer un message et après cela rien n'est reçu.Comment créer un socket hôte qui reçoit toujours des données. python

mon while devrait me permettre de faire ce donc je ne sais pas pourquoi ce n'est pas possible pour moi »()

#Host server 

    import socket 

    server_host= 'localhost' 
    server_port= 88 

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

    server.bind((server_host,server_port)) 

    server.listen(5) 

    print('listening on {} port {}'.format(server_host,server_port)) 


    while True: 
     client,addr = server.accept() 

     recieve = client.recv(2024) 
     print(recieve.decode()) 

Client:

# Python-Socket-Client 

import socket 

#'localhost' 
# 88 
target_server = str(input('Target_Host:')) 
target_port = int(input('Target_Port:')) 

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

client.connect((target_server,target_port)) 
print('\n') 
print('****************************') 
print(target_server) 
print(target_port) 

def send_and_recieve_message(message): 


    #response = client.recv(4065) 
    if type(message) == str: 
     client.send(message.encode()) 





while True: 
    mess= input("{}:".format('Client')) 
    send_and_recieve_message(mess) 

Répondre

2

Dans votre code hôte server.accept() est un appel bloquant. Il faudra attendre que quelqu'un se connecte. Vous devez le séparer de votre boucle while. Et puis vérifiez si la connexion est toujours valide sinon attendez une autre connexion.

while True: 

    client,addr = server.accept() 

    while client != None: 
     recieve = client.recv(2024) 
     print(recieve.decode()) 

Quelque chose de similaire à cela, vous voudrez probablement ajouter une meilleure vérification pour voir si la connexion est toujours valide.