免费注册 查看新帖 |

Chinaunix

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

仙子教你动手写socket~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-25 17:33 |只看该作者 |倒序浏览
  1. # cat svr.pl
  2. use strict;
  3. use IO::Socket;

  4. my $listen_socket = IO::Socket::INET->new(
  5.                                            LocalPort => 1234,
  6.                                            Listen    => SOMAXCONN,
  7.                                            Proto     => 'tcp',
  8.                                            Reuse     => 1,
  9.                                            Timeout   => 30,
  10.                                          );

  11. die "can't create socket: $@\n" unless defined $listen_socket;


  12. while ( 1 )  { # running on frontend
  13.     next unless my $sock = $listen_socket->accept;
  14.     my $peer_host = $sock->peerhost();

  15.     my $mesg = '';
  16.     while (<$sock>) {
  17.         $mesg .= $_;
  18.     }

  19.     print $sock "welcome $peer_host, just echo back:\n";
  20.     print $sock $mesg;
  21.     $sock->close or die "can't close established socket $!\n";

  22.     select(undef, undef, undef, 0.25);
  23. }



  24. # cat cli.pl
  25. use strict;
  26. use IO::Socket;

  27. my $sock=IO::Socket::INET->new(PeerAddr => '127.0.0.1',
  28.                                PeerPort => 1234,
  29.                                Proto    => 'tcp')
  30.          or die $@;
  31.    
  32. print $sock "hello first line\n";
  33. print $sock "hello second line\n";

  34. $sock->shutdown(1); # tell peer I have finished writing

  35. print while <$sock>; # read from socket and print

  36. $sock->close or die $!;
复制代码


# perl svr.pl &
[1] 16704

# perl cli.pl
welcome 127.0.0.1, just echo back:
hello first line
hello second line



很久没写socket了~~
但用perl写socket是超级简单呀,顺手就搞定~
当然,复杂的svr/cli要考虑很多东西...
见偶的用Perl写一套监控系统,或Lincoln的书,或POE相关source.

【更新了一下:客户端当然可以一次发送多个命令。
另一般为了非阻塞,socket write和read可以分2个进程来做。】

[ 本帖最后由 兰花仙子 于 2009-11-26 21:14 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-25 17:38 |只看该作者
代码量不是很大

论坛徽章:
1
2015亚冠之塔什干火车头
日期:2015-07-13 12:36:28
3 [报告]
发表于 2009-11-25 17:54 |只看该作者
貌似我这里有一本

用Perl写一套系统监控程序.pdf

195.09 KB, 下载次数: 675

论坛徽章:
0
4 [报告]
发表于 2009-11-25 18:54 |只看该作者
很强大~

[ 本帖最后由 tommydu 于 2009-11-25 19:06 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-11-25 20:01 |只看该作者
新手, 还在看书, 学习……
发现仔细是一个非常重要的素质!

论坛徽章:
0
6 [报告]
发表于 2009-11-25 21:37 |只看该作者
支持,又开始出来渡人了啊。
我用Perl写过两个比较好的系统,现在y和a公司还在用。

论坛徽章:
0
7 [报告]
发表于 2009-11-25 22:43 |只看该作者
原帖由 撒哈拉里的鱼 于 2009-11-25 21:37 发表
支持,又开始出来渡人了啊。
我用Perl写过两个比较好的系统,现在y和a公司还在用。


话都说成这样了
就拿出来 看看吧

论坛徽章:
0
8 [报告]
发表于 2009-11-26 09:44 |只看该作者

回复 #7 hitsubunnu 的帖子

是啊,实现什么功能?

论坛徽章:
0
9 [报告]
发表于 2009-11-26 11:18 |只看该作者
仙子很有才。

论坛徽章:
0
10 [报告]
发表于 2009-11-26 11:50 |只看该作者
好像只有仙子有个MM,其他的MM呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP