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