免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1796 | 回复: 3
打印 上一主题 下一主题

请教:关于socket的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-06 16:00 |只看该作者 |倒序浏览
我有如下代码,这个代码可以正常的得到网页的内容,也就是文本内容。但却无法将二进制文件的内容读出,请问问题是出在请求方式还是读写方式上呢?能否给出正确的方式呢?我已经翻阅了好多资料,可是怎么改也不对。还望指教。

请求网页时是200,但是请求zip文件或者MP3时就变成400了。

代码如下:

#!perl!

#

use strict;
use IO::Socket qw(EFAULT :crlf);

my $data;

$/ = CRLF;

my ($host,$port,$path);
my $address_new = shift;
($host,$port,$path) = ($1,$2||80,$3) if($address_new =~ m!^(?:http://)?(.*?)(?:[0-9]+))?(/.*)$!x);

print "[$host] [$port] [$path]\n\n";

my $socket = IO::Socket::INET->new(

PeerAddr => $host,
PeerPort => $port,
Type     => SOCK_STREAM,
Timeout  => 20

) or die "Can't connect!";

print $socket "GET $path HTTP/1.1",CRLF,CRLF;
print $socket "HOSThostport";

my $out;

read ($socket,$out,1024);
print "$out\n";

close $socket;

论坛徽章:
0
2 [报告]
发表于 2010-08-06 17:31 |只看该作者
本帖最后由 lanmeibanban 于 2010-08-06 22:24 编辑

晕,貌似又可以了。做了一些改动。主要是换行的。我是按perl网络编程里的格式写的。但是参考了网上perl http断点续传那个例子。将请求的头换行改了下。貌似能读了。。。。

代码如下:
  1. #!perl!
  2. #
  3. use strict;
  4. use IO::Socket qw(:DEFAULT :crlf);
  5. my $data;
  6. my ($host,$port,$path);
  7. my $address_new = shift;
  8. ($host,$port,$path) = ($1,$2||80,$3) if($address_new =~ m!^(?:http://)?(.*?)(?::([0-9]+))?(/.*)$!x);
  9. print "[$host] [$port] [$path]\n\n";
  10. my $socket = IO::Socket::INET->new(
  11. PeerAddr => $host,
  12. PeerPort => $port,
  13. Type     => SOCK_STREAM,
  14. Timeout  => 20
  15. ) or die "Can't connect:$!";

  16. [color=red]print $socket "GET $path HTTP/1.1\n";
  17. print $socket "HOST:$host\n";
  18. print $socket "Connection: close\n\n";[/color]

  19. my $out;
  20. sysread ($socket,$out,1024);
  21. print "$out\n";
  22. close $socket;
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-08-06 17:34 |只看该作者
晕。怎么能不让表情显示出来。。。。好好的字符都成表情了。。不能不自动转换么?

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
4 [报告]
发表于 2010-08-06 19:42 |只看该作者
请使用[ q u o t e ] [ /q u o t e ]将其包括起来
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP