在Python中从网络套接字读取字节

时间:2013-05-23 11:30:57

标签: python sockets byte

我想编写一个从网络套接字获取数据的Python程序,然后扫描数据以查找特定的数据序列。

'从网络中获取'位工作正常,我可以将检索到的数据转储到文件中,没有问题,但是试图让Python实际上一次扫描一个字节的数据是不行的。

每当我将代码放入'for byte'循环中尝试工作时,我就不会发生任何事情。

当我运行下面的程序时,byte.out的大小通常是buf.out大小的两倍,我认为这是一个指向出错的主要症状。如果内部循环实际上是逐字节处理数据,我希望两个输出文件的大小相同。

我的感觉是“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

1 个答案:

答案 0 :(得分:0)

chr(buf)应该给出一个TypeError。使用

for byte in buf: