這是 mfchang 老師 VoIP 的作業,因為懶惰用 st r系列的 function 處理 SIP message,就把腦筋動到 perl 上來了。
my $sock = IO::Socket::INET->new(LocalPort => $port, Proto => ‘udp’) || die “$@\r\n”;
my $sel = IO::Select->new($sock);
while($sel->can_read) {
if((my $clisock = recv($sock, my $buffer, 1500, 0))) {
send ($sock, $buffer, 0 ,$clisock);
}
}
這樣就完成一個簡單的 udp echo server 了,是不是很簡單呢?
我們不用處理一堆惱人的endian,也不用處理 struct sockaddr_in,回傳訊息也變得相當的簡單, 加上有 regular expression 的加持,除了效率差之外,拿來寫作業真的很棒啊……。
另外 perldoc 是你的好朋友,我是靠著 google 大神硬幹寫完之後才知道。
詳細的 code 你可以在這邊取得,有什麼建議的話也請告訴我。