perl socket編程

來源:互聯網
上載者:User

標籤:style   os   使用   io   for   檔案   sp   on   size   

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 connect\n";
while(1){
  last if my $addr1=accept(S,SOCK);#接收串連
}
print "connected\n";
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,AF_INET,SOCK_STREAM,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 "bye\n";
    exit 1;
 }
 else
 {
   print SOCK "$in";
   $hh=<SOCK>;
   print "recieve massage from server: $hh";
 }
}

perl socket編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.