关于python的一个问题

2024-04-26 05:18:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经完成了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() 

Tags: 数据服务器脚本clienthost消息portbuffer
1条回答
网友
1楼 · 发布于 2024-04-26 05:18:12

您只需在发送回响应后关闭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() 

请注意,这也意味着您需要直接等待另一个连接,因此我已经从代码中删除了内部循环。你知道吗

相关问题 更多 >

    热门问题