Python Socket客户端recv(缓冲区大小)

时间:2017-02-15 10:56:02

标签: python sockets client recv

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

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

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