#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. Большое вам спасибо!