作者HZYSoft (PCMan 2004)
看板Programming
标题Re: [问题] 请问telnet程式...
时间Mon Aug 7 19:00:00 2006
※ 引述《TKyo (暗黑贵公子)》之铭言:
: ※ 引述《ju22 (我是好人好事代表)》之铭言:
: : 请问我用telnet程式去抓web server或
: : ftp server的两进位档(e.g.: image file、executable file)
: : ,是不是抓完後还需要进过什麽样的处理才能正确解读?
: : 因为我telnet已经使用8-bits传输了还有哪点没注意吗?
: : thanks!!
: 不用啊, 假设要抓取 http://www.test.com/image/test.gif
: telnet www.test.com 80
: GET /image/test.gif HTTP/1.0 ^n^n 就好了
: 而它就会丢回 HTTP header + Binary File
: Binary File 的 Size 则是会在传回的 HTTP header 之 Content-Length 中定义
: 第一个 ^n^n (HTTP header 结尾) 後, read + write + 验证 size 就 ok 了
: 以上原理请自行参考
: Hypertext Transfer Protocol 1.0 -- HTTP/1.0
: http://www.w3.org/Protocols/rfc1945/rfc1945.txt
: Hypertext Transfer Protocol 1.1 -- HTTP/1.1
: http://www.w3.org/Protocols/rfc2616/rfc2616.txt
并没有这麽单纯.... http 的部份是这样,telnet 的部份并不是
telnet protocol 必须处理一些控制码,例如 0xff 是 IAC, 0x00 好像是 SB
这些会被解译为 telnet 命令,而不会当作单纯的文字资料,也不会输出在 stdout
stdout 只会有 parse 过後的结果,也就是会少掉一些被解译成控制码的部份
Linux 的 telnet 应该会直接把 ANSI escape sequence 输出,所以这部份应该没影响
比较可疑的就是和 telnet command 以及 options 冲突的字元
一个 binary 档案里面要找到为 0xff 的 byte 是相当容易的,
而不幸这正是 telnet 最重要的指令之一....
建议你自己写 socket,或者用 curl,telnet 在这里是行不通的
--
个人网页:
http://pcman.sayya.org/ 上面有自画像及各种联络资讯
PCMan 全系列 BBS 连线软体
http://pcman.ptt.cc/ http://pcmanx.csie.net/
新酷音输入法 for Windows
http://chewing.csie.net/
IE Tab Firefox plugin/extension
http://ietab.mozdev.org/
PCMan 油画作品集:
http://www.wretch.cc/album/album.php?id=pcman&book=1
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.129.57.142