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

Perl socket client and server

发布时间:2020-12-15 20:50:52 所属栏目:大数据 来源:网络整理
导读:TCP: server端: #!/usr/bin/perl -w use Socket; use IO::Handle; socket(SOCK,AF_INET,SOCK_STREAM,getprotobyname("tcp")); #setsockopt(SOCK,SOL_SOCKET,SO_REUSEADDR,1); my $addr=sockaddr_in(3000,INADDR_ANY); bind(SOCK,$addr); listen(SOCK,SOMAX

TCP:
server端:

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

listen(SOCK,SOMAXCONN);

while(1){
next unless my $addr1=accept(S,SOCK);

S->autoflush(1);
#?????? STDOUT->autoflush(1);
print S "welcome/n";
while(<S>){
print $_;
chomp;
if($_=~/^quit/i){
print S "bye";
close S;
close SOCK;
exit 0;
}
print S (`$_`)."/n";
}

close S;
}
client端:

#!/usr/bin/perl -w
use Socket;
use IO::Handle;
socket(SOCK,getprotobyname("tcp"));

my $addr=sockaddr_in(3000,inet_aton("192.168.1.73"));
connect(SOCK,$addr);
SOCK->autoflush(1);
$buff=<SOCK>;
STDOUT->autoflush(1);
print $buff;
while(1)
{
$in=<STDIN>;
send(SOCK,$in,0);
while(my $l=sysread(SOCK,$buff,100))
{
if($buff=~/bye/i){
close SOCK;
exit 0;
}
print $buff;
last if $l<100;
}

}
UDP:#udp server#!use/bin/perl -wuse Socket; #导入Socket库$localhost=sockaddr_in(4000,INADDR_ANY);#压入sockaddr_in模式,利用了全局当地压缩地点INADDR_ANY保存字socket(SERVER,SOCK_DGRAM,17); #成立UDP套接字bind(SERVER,$localhost); #绑定套接字while(1){ #进入办事器轮回体next unless $client=recv(SERVER,100,0); #若是领受到数据就把数据压入$buff,保存长途地点在$clientchop($buff); #减去$buff末了的输入标记print "$buff/n"; #在$buff变量打入STDOUTsend(SERVER,"$buff/n",$client); #把$buff发送给客户端}close SERVER; #封闭套接字exit 1; #退出法式 #udp client #!use/bin/perl -w use Socket; #导入Socket库 $host=$ARGV[0]; #第一参数为主机变量 $port=$ARGV[1]; #第二参数为端口变量 $packhost=inet_aton($host); #压缩主机地点 $address=sockaddr_in($port,$packhost); #压为sockaddr_in模式 socket(CLIENT,17); #成立UDP套接字 send(CLIENT,"hi,body!/n",$address); #向套接字发送字符串变量 recv(CLIENT,0); #领受数据 print"$buff/n"; #把领受后的数据打入STDOUT close CLIENT; #封闭套接字 exit 1; #退出法式

(编辑:李大同)

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

    推荐文章
      热点阅读