2017-02-10 33 views
0

大家好,謝謝你審查我的問題!python tcpserver不要循環

我是新來的蟒蛇及繼起的一本書教程中,我給她買,我在製作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支持從我發現谷歌搜索周圍!

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 很大吧? NO,因爲某種原因,我無法弄清楚while循環不執行,因此爆發了的.py之後的第二次,所以我不能測試the tcp server scripttcp client script

有人能告訴我什麼我」錯了嗎?

+0

顯示與追溯完整的錯誤消息。同樣,即使'格式'是實現它的新方法,仍然支持'%'格式。 –

+0

對不起,浪費你的時間這個問題是我的行間距,我通常在php程序,這是不是空間大小寫敏感causs括在括號內 – Ghostetr

回答

0

你應該開始函數的線程外側。如果你注意identation,該while環是handle_client一部分,因此你一旦看到腳本退出印刷「Listning上.....」

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()