2016-10-23 6 views
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.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()) 

답변

0

시도 :

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'이면 '성공'을 되돌려 보내고, 그렇지 않으면 클라이언트가 메시지를받지 않고 영원히 기다립니다.

+0

정말 고마워요! –

+0

당신은 오신 것을 환영합니다. – Nurjan

관련 문제