Python 套接字客户端接收(缓冲区大小)

Python Socket client recv (buffer size)

我正在尝试使用 python 套接字编程将服务器响应写入文本文件,尽管我的代码有效但不是逐行写入(即)我需要在每行数据的末尾附加当前时间,但它在第二行打印

非常感谢您的帮助!!!

服务器端:ping www.google.com | nc -l 9000

客户端:

   PORT = 9000
   HOST = 127.0.0.1
   client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   client.connect((self.HOST,self.PORT))
   with open(filename, 'wb') as f:
       while (recieved_data < self.BUFFER_SIZE):
            try:
                data = client.recv(self.BUFFER_SIZE)
                recieved_data += len(data)
                f.write(data + ' ' + ip_port_details + ' ' + str(datetime.strftime(datetime.now(),'%Y%m%y%I%M%S')))
                print 'recieved_data',recieved_data

可能是因为 ping 已经发送了带有换行符的数据,\n。或者 ip_port_details 以相同的换行符 \n 结束。您可以通过 data.strip('\n') 删除尾随换行符或通过 data.split('\n') 将传入数据拆分为字符串列表并为每个字符串附加时间戳。或者,您可以用以下内容替换所有换行符:

>>> 'abc\nd123'.replace('\n', '<newline>')
'abc<newline>123'