2014-04-24 93 views
0

我已經完成了python socket服務器腳本。並且我想通過瀏覽器連接到它,然後套接字服務器會將一些數據發送到顯示數據消息的瀏覽器。 服務器套接字可以接受來自瀏覽器的請求,但服務器無法向瀏覽器發送數據信息,瀏覽器長時間處於阻塞狀態。爲什麼? 服務器套接字腳本如下,請幫我查看這段代碼,謝謝!關於python socket的一個問題

import socket 

HOST='127.0.0.1' 
PORT=9003 
BUFFER=4096 
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

sock.bind((HOST,PORT)) 

sock.listen(0) 
print('tcpServer listen at: %s:%s\n\r' %(HOST,PORT)) 
while True: 
    client_sock,client_addr=sock.accept() 
    print('%s:%s connect' %client_addr) 
    while True: 
    recv=client_sock.recv(BUFFER) 
    if not recv: 
     client_sock.close() 
     break 
    print('[Client %s:%s said]:%s' % (client_addr[0],client_addr[1],recv)) 
    client_sock.send('HTTP/1.1 200 OK \n Content-type:text/html\r\n\r\n tcpServer has received your message') 
sock.close() 

回答

0

你只需要發回的響應

import socket 

HOST='127.0.0.1' 
PORT=9003 
BUFFER=4096 
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

sock.bind((HOST,PORT)) 

sock.listen(0) 
print('tcpServer listen at: %s:%s\n\r' %(HOST,PORT)) 
while True: 
    client_sock,client_addr=sock.accept() 
    print('%s:%s connect' %client_addr) 
    recv=client_sock.recv(BUFFER) 
    if not recv: 
    client_sock.close() 
    break 
    print('[Client %s:%s said]:%s' % (client_addr[0],client_addr[1],recv)) 
    client_sock.send('HTTP/1.1 200 OK \n Content-type:text/html\r\n\r\n tcpServer has received your message') 
    client_sock.close() 
sock.close() 

注意,這也意味着你需要直接以等待另一連接後關閉client_sock,所以我已經刪除了內從你的代碼循環。