加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl socket编程

发布时间:2020-12-15 23:53:48 所属栏目:大数据 来源:网络整理
导读:soket是网络套接字,它是ip地址和端口号的组合。在perl中使用套接字需要SOCKET模块;以经过测试可以使用:下面使用如下的例子进行说明: 服务器端: #!/usr/bin/perl -w use Socket; use IO::Handle; socket(SOCK,AF_INET,SOCK_STREAM,getprotobyname("tcp")

soket是网络套接字,它是ip地址和端口号的组合。在perl中使用套接字需要SOCKET模块;以经过测试可以使用:下面使用如下的例子进行说明:

服务器端:

#!/usr/bin/perl -w
use Socket;
use IO::Handle;
socket(SOCK,AF_INET,SOCK_STREAM,getprotobyname("tcp"));#初始化socket
setsockopt(SOCK,SOL_SOCKET,SO_REUSEADDR,1);
my $addr=sockaddr_in(3000,INADDR_ANY);
bind(SOCK,$addr);#绑定地址

listen(SOCK,SOMAXCONN);#监听
while(1)
{
? print "wait for a connectn";
while(1){
? last if my $addr1=accept(S,SOCK);#接收连接
}
print "connectedn";
S->autoflush(1);#内容不会放入缓存直接就可以输出
while(1){
?next unless $msg_in=<S>;#使用套接字的描述符和文件描述符一样,这样相对于c的socket就更加方便了,当然也可以使用send,recv等函数。注意接收到的内容结尾处已经包含换行符。
?last if($msg_in=~ /quit/i || $msg_in =~ /q/i);
?print "$msg_in";
?print S "send back: $msg_in";
?}
}
?close S;
?close SOCK;


客户端:

#!/usr/bin/perl -w use Socket; use IO::Handle; socket(SOCK,getprotobyname("tcp")); my $addr=sockaddr_in(3000,inet_aton("localhost")); connect(SOCK,$addr); SOCK->autoflush(1); while(1){ ?print "send msg:n"; ?$in=<STDIN>;#已经包含结束符了 ?if($in =~ /quit/i || $in =~ /q/i) ?{ ? ? print SOCK "$in"; ? ? print "byen"; ? ? exit 1; ?} ?else ?{ ? ?print SOCK "$in"; ? ?$hh=<SOCK>; ? ?print "recieve massage from server: $hh"; ?} }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读