我想编写一个 Python 程序,它从网络套接字获取数据,然后扫描数据以查找特定的数据序列。
“从网络获取”位工作正常,我可以毫无问题地将检索到的数据转储到文件中,但是试图让 Python 一次实际扫描一个字节的数据是行不通的。
每当我将代码放入“for byte”循环中尝试工作时,我都不会发生任何事情。
当我运行下面的程序时,byte.out 的大小通常是 buf.out 大小的两倍,我认为这是指出问题所在的主要症状。如果内部循环真的是逐字节处理数据,我希望两个输出文件的大小相同。
我的感觉是“for byte in chr(buf):”有问题,但我真的不知道该放什么。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
fh1 = open("buf.out", 'wb')
fh2 = open("byte.out", 'wb')
s.connect(("obscured.url", 9999))
s.send('GET /xx HTTP/1.1\nHost obscured.url:9999\n\n')
for i in range(10):
buf = s.recv(1024)
for byte in chr(buf):
print >>fh2, byte
print >>fh1, buf
s.close