2015-10-29 2 views
0

Я понимаю, что причиной его отправки является то, что я устанавливаю recv на 1024 и могу изменить, насколько это допустимо, изменив это, однако я хочу только один Hello Мир отправлен. Я попытался найти вопрос, и ничего действительно полезного не появилось. Заранее спасибо!!Socket recv in Python 3 повторяющийся ввод снова и снова

Сервер:

#!/usr/bin/python 
import socket 
import sys 


class Server: 
    def __init__(self, sock=None): 
     if sock is None: 
      self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
      print("socket created") 

    def bind(self, HOST, PORT): 
     try: 
      self.sock.bind((HOST, PORT)) 
     except socket.error as msg: 
      print("Bind failed. Error Code : " + 
        str(msg[0]) + "Message " + msg[1]) 
      sys.exit() 
     print("Socket bind complete") 

    def main_loop(self): 
     self.sock.listen(10) 
     print("Socket now listening") 
     while 1: 
      conn, addr = self.sock.accept() 
      print("Connected with " + addr[0] + ":" + str(addr[1])) 
      data = conn.recv(1024) 
      print(data) 
     self.sock.close() 

    def main(self): 
     HOST = '' 
     PORT = 8888 
     self.bind(HOST, PORT) 
     self.main_loop() 


def main(): 
    server = Server() 
    server.main() 


if __name__ == "__main__": 
    main() 

Client Выход

#!/usr/bin/python 
import socket 
import sys 


class Client: 
    def __init__(self, sock=None): 
     if sock is None: 
      self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
      print("socket created") 

    def connect(self, HOST, PORT): 
     try: 
      self.sock.connect((HOST, PORT)) 
     except socket.error as msg: 
      print("Connect failed. Error Code : " + 
        str(msg[0]) + "Message " + msg[1]) 
      sys.exit() 
     print("Socket connect complete") 

    def main_loop(self): 
     while 1: 
      self.sock.sendall(b'Hello world') 
     self.sock.close() 

    def main(self): 
     HOST = '' 
     PORT = 8888 
     self.connect(HOST, PORT) 
     self.main_loop() 


def main(): 
    client = Client() 
    client.main() 


if __name__ == "__main__": 
    main() 

Сервер:

socket created 
Socket bind complete 
Socket now listening 
Connected with 127.0.0.1:45676 
b'Hello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello worldHello world' 

Client Выход:

ответ

2

Я подозреваю, что проблема в клиенте, а не на сервере:

def main_loop(self): 
    while 1: 
     self.sock.sendall(b'Hello world') 
    self.sock.close() 

Когда метод main_loop называется, он будет посылать «Привет мир» до тех пор, пока пользователь не вмешивается или процесс умирает или компьютерных клинья или тепла смерть Вселенной, которая когда-либо случается в первую очередь.

+0

Исправлено, спасибо большое! Просто глупая ошибка. Спасибо, что посмотрели на меня! – Kenton

Смежные вопросы