收藏本站 收藏本站
积木网首页 - 软件测试 - 常用手册 - 站长工具 - 技术社区
积木学院 > 黑客技术 > 黑客编程 > 正文

learning_perl_5.用perl创建socket

来源:互联摘选 日期:2008-11-01 07:13

好长时间没继续写了,比较忙,所以今天就暂时先讲两个example吧
网络编程嘛,所以这里教大家用一用I:Socket这个模块。


使用这个模块之前,大家最好能先对perl的面向对象编程有所了解,当然,如


果你对C++或是其他语言的面向对象的编程有所了解的话,在这里也会对你有帮


助。


首先说一个方法new(),在使用I:Socket::INET的时候,这个方法必然是要用


到的,例如:
use I:Socket;
$sock_1 = I:Socket::INET->new(
    LocalHost => '127.0.0.1',
                                LocalPort => 5277,
                                Proto     => 'tcp',
                                Listen    => 3,
                                Reuse     => 1,
                               )
    or die "no socket:$!";


不出意外的话,这个程序就在本地的5277端口上创建了一个socket,当然,由


于这个程序没有接受数据的过程,所以即使在运行完这个程序后使用netstat命


令也看不到打开的端口,但是你可以在程序中插入system("netstat -an")来看


一下本地打开的端口中是否有5277(应该可以从结果中看到,是打开的)。


下面,我们来做一个能接收数据的程序,如果想要接收数据的话,又要用到另


外一个方法accept(),来看一下例子:


use I:Socket;
$sock_1 = I:Socket::INET->new(
    LocalHost => '127.0.0.1',
                                LocalPort => 5277,
                                Proto     => 'tcp',
                                Listen    => 3,
                                Reuse     => 1,
                               )
    or die "no socket:$!";
$sock_2 = $sock_1->accept();


while ( $data = <$sock_2> ){
   print $data;
   }
close $sock_1;


在使用accept()方法($sock_1->accept())后,程序创建了一个类似文件中句


柄的东西$sock_2,这里我们完全可以把它当作句柄使用(而实际上它也就是一


个句柄),就像程序中写到的:$data = <$sock_2>


这样,我们运行这个程序后,可以在本地打开5277端口监听,为了证明效果,


我们可以使用nc来实验一下:nc -vv 127.0.0.1 5277
在nc显示python [127.0.0.1] 5277 (?) open 后,可以随意输入一些字符并按


回车,这样,每一行字符都将在被监听端的shell上显示出来。



再来一个客户端:
刚才,我做的实际上是服务端,而客户端则是用nc来实现的,下面,我们自己


来做一个客户端,其中要用到方法print()(其实不用也可以)


use I:Socket;
$sock = I:Socket::INET->new ('127.0.0.1:5277');
die "Socket could not be created.Because $!\n" unless $sock;
$msg = "Hello.";
$sock->print($msg);
close $sock;


这是针对上面的服务端程序写的,这里的第五行实际上还可以这样来写:
print $sock $msg;
这样就将$sock作为一个句柄,并将$msg写入。


在本机上先运行服务端监听5277端口,然后再运行客户端,这样,客户端会将


一个字符串"Hello."写入本地端口5277,而服务端将会在其监听的5277端口上


捕获这端字符。


OK,以上就是perl的网络编程初步,以后再慢慢讲了,今天时间不多,先溜了


-_-!

推荐阅读

 

热点信息

 
强悍的草根IT技术社区,这里应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号