Сокет Python останавливается после ввода

#sockets #python-3.x

#сокеты #python-3.x

Вопрос:

Я пытаюсь выполнить команды через сокет, но программа останавливается сама после одного ввода. Я совершенно новичок в сокетах, и это все, что я сделал.

Клиент:

 import socket


HOST = input("Enter the ip: ")
PORT = 7629
addr = (HOST, PORT)
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect((addr))

#
while True:
    msg = input("Enter command> ")
    msg = str.encode(msg)
    clientsocket.send(msg)
    receivemsg = clientsocket.recv(1024).decode()
    print(receivemsg)



#
  

Сервер:

 import socket
import os
import sys

host = '0.0.0.0'
port = 7629
size = 1024
addr = (host, port)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((addr))
s.listen(20)

while True:
    print("Listening.")
    client ,adress = s.accept()
    data = client.recv(size)
    print("received message: ", data.decode())
    if data.decode() == "dir":
        msg = "succesful!"
        client.send(msg.encode())
  

Ответ №1:

Попробуйте изменить свой клиент на этот:

 import socket

HOST = input("Enter the ip: ")
PORT = 7629
addr = (HOST, PORT)
#clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#clientsocket.connect((addr))

while True:
    msg = input("Enter command> ")
    msg = str.encode(msg)
    clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    clientsocket.connect((addr))
    clientsocket.send(msg)
    receivemsg = clientsocket.recv(1024).decode()
    print(receivemsg)
    clientsocket.close()
  

Обратите внимание на код на стороне вашего сервера. Если отправленная команда ‘dir’, то она отправит обратно «успешно», в противном случае ваш клиент не получит никакого сообщения обратно и будет ждать вечно.

Комментарии:

1. Большое вам спасибо!