2017-02-10 7 views
0

Приветствую всех и благодарю вас за отзыв моего вопроса!python tcpserver dont loop

Я новичок в Python и после урока из книги, которую я сук, где я запас на то, чтобы tcpserver

теперь это написанный для Python 2.x, и я знаю, что я должен сделать это на 3. x, но я хочу начать с последующих работ, объясненных в книге!

Это его код простой сервер TCP:

import socket 
import threading 

bind_ip = "0.0.0.0" 
bind_port = 9999 

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

server.bind((bind_ip,bind_port)) 

server.listen(5) 

print "[*] Listning on %s:%d" % (bind_ip,bind_port) 

#this is our client-handling thread 
def handle_client(client_socket): 

    #print out what the client sends 
    request = client_socket.recv(1024) 

    print "[*] Recived: %s" % request 

    #send back a packet 
    client_socket.send("ACK!") 

    client_socket.close() 

    while True: 

     client,addr = server.accept() 

     print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1]) 

    #spin up our client thread to handle incomming data 

    client_handler = threading.Thread(target=handle_client,args=(client,)) 
    client_handler.start() 

теперь этот код не выполняется, когда я запускаю его из питона 2.7.x дает мне недопустимый синтаксис% поэтому я изменил некоторые линии поддержки .format as% issent больше поддерживается из того, что я нашел googling!

print "[*] Listning on {0}:{1}".format(bind_ip,bind_port) 
print "[*] Recived: {0}".format(request) 
print "[*] Accepted connection from: {0}:{1}".format(addr[0],addr[1]) 

, когда я запустить его сейчас выплевывает: [*] Listning on 0.0.0.0:9999 большое право? НЕТ, потому что по какой-то причине я не могу понять, что цикл while не выполняется, поэтому он вырывается из .py через секунду, поэтому я не могу проверить the tcp server script с моими tcp client script

Может ли кто-нибудь сказать мне, м не так?

+0

Показать полное сообщение об ошибке с TRACEBACK. Кроме того, форматирование '%' по-прежнему поддерживается, даже если 'format' - это новый способ сделать это. –

+0

Извините, что тратил ваше время на проблему. Я обычно прогам в php, который не является пространственным регистром. Касус его закрыт в скобках – Ghostetr

ответ

0

вы должны начать обратную сторону от функции. Если вы обратите внимание на identation, петля while является частью handle_client и, следовательно, вы видите выход сценария, как только печать «слушает на .....»

def handle_client(client_socket): 
    #Function defnition 
while True: 

     client,addr = server.accept() 

     print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1]) 
     client_handler = threading.Thread(target=handle_client,args=(client,)) 
     client_handler.start() 

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

  • Нет связанных вопросов^_^