Chinaunix
标题:
[请教]perl中socket编程只返回部分结果问题..
[打印本页]
作者:
hjleochen
时间:
2004-12-20 16:03
标题:
[请教]perl中socket编程只返回部分结果问题..
我需要写一个socket程序,连接ftp或telnet(不能用NET::FTP库之类的),过程中遇到如下问题:
下面程序运行结果为:
220 Serv-U FTP Server v5.0 for WinSock ready...
而实际如果你用ftp客户端登陆时应该回显:
220 Serv-U FTP Server v5.0 for WinSock ready...
User (www.csdn.net
none)):
也就是换行后的内容没了?登陆telnet服务器也是一样的结果,,
是不是我少设置了什么函数或用错了哪个地方?
初学perl请多指教。。。找相关资料,看perldoc一天了没找到解决方法,谢谢
#!/usr/bin/perl -w
use strict;
use IO::Socket;
use Socket;
my $remote_host="www.csdn.net";
my $remote_port="21";
my $socket = IO::Socket::INET->;new("$remote_host
remote_port"
or die "Couldn't connect to $remote_host
remote_port : $@\n";
$socket->;autoflush(1);
while (my $answer = <$socket>
{
print $answer."\n";
}
close($socket);
作者:
flw
时间:
2004-12-20 16:08
标题:
[请教]perl中socket编程只返回部分结果问题..
不要用钻石操作符(<>;)来操作 socket,
钻石操作符每次读取一个记录,
而 Perl 默认的记录分隔符是回车换行,
在你这个例子中,FTP 服务器返回的最后一行数据不是以回车符结尾的(注意用 FTP 客户端时光标停留的位置),
所以钻石操作符将一直等待,无法返回。
建议用 read。
作者:
hjleochen
时间:
2004-12-20 17:04
标题:
[请教]perl中socket编程只返回部分结果问题..
谢谢flw兄多次的热情帮助。。。
其实在这之前我已经试用read,recv以及delphi中的sock之类的都是返回一行,刚才又认真的想想,又试了试,
发现:
ftp服务器实际上只有返回:
220 Serv-U FTP Server 5.0 for WinSock ready...
这一行,而
User (www.csdn.net
none)):
实际上是ftp客户端打印出来了。。。
呵呵,一时没想明白,见笑了。。。
作者:
flw
时间:
2004-12-20 18:41
标题:
[请教]perl中socket编程只返回部分结果问题..
呵呵。
又长见识了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2