我已经完成了一个python套接字服务器脚本。我想通过浏览器连接到它,然后套接字服务器将一些数据发送到浏览器,显示数据消息。 服务器套接字可以接受来自浏览器的请求,但服务器无法向浏览器发送数据消息,浏览器长时间处于阻塞状态。为什么? 服务器套接字脚本如下,请帮我查看这段代码,谢谢!
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 :(得分:0)
您只需在发回回复后关闭client_sock
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()
请注意,这也意味着您需要直接等待另一个连接,因此我已从您的代码中删除了内部循环。