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

在Python中从网络套接字读取字节,python,sockets,byte,Python,Sockets,Byte,我想编写一个Python程序,从网络套接字获取数据,然后扫描数据,寻找特定的数据序列 “从网络获取”位工作正常,我可以毫无问题地将检索到的数据转储到文件中,但试图让Python一次扫描一个字节的数据是行不通的 每当我输入代码尝试在“for byte”循环中工作时,我都不会有太多事情发生 当我运行下面的程序时,byte.out的大小通常是buf.out大小的两倍,我认为这是一个主要症状,表明出现了什么问题。如果内部循环真的逐字节处理数据,我希望两个输出文件的大小相同 我的感觉是“for byte

我想编写一个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
chr(buf)
应给出一个类型错误。使用

for byte in buf:

只是一个快速的预感:尝试
str(buf)
而不是
chr(buf)
?或者只是
在buf中的字节
?是因为每个字节都打印一个换行,所以大小加倍了吗你想要
print>>fh2,byte,
?你不使用
urllib
urllib2
有什么特别的原因吗?@akadiot:似乎没有什么区别。@RichieHindle:我刚开始用“buf中的byte”,当这似乎不起作用时,我开始用谷歌搜索,并尝试我找到的页面上建议的东西。你完全正确,翻倍是由换行引起的。当我在od-x中看到所有的0a时,我应该已经注意到了,但是已经很晚了,我很累了,这条红鲱鱼把我抛到了一边。我试着把,放在最后,现在它是加倍与空间代替。