- 论坛徽章:
- 0
|
本帖最后由 r_zack 于 2010-12-15 16:18 编辑
大家好,打听一下,用Perl做的UDP Server,在收到客户端A发来的消息和客户端B发来的消息后,如果想主动给客户端A发消息,要怎么做?
我是用如下代码生成socket:- #!/usr/bin/perl
- use IO::Socket::INET;
- my $socket = IO::SOCKET::INET->new(
- LocalPort => 90,
- Proto => 'udp');
复制代码 并用如下代码读取内容:- while(1) {
- if ($socket->recv($buff, 1024, 0) {
- ....
- $socket->recv($buff, 1024,0);
- ....
- }
- }
复制代码 我从前只做过TCP Socket,因为可以$client = $socket->accept,所以随时可以方便的往客户端写东西,
最近看了骆驼书上粗浅的讲解后开始试验,后发现,TCP Socket的循环中可以一次循环只处理一个客户端,其他客户端通过fork来处理;
而UDP,我看了cpan上面IO::Socket::INET简陋的文档后完全搞不明白,看了网上的一些示例后才搞明白了如上的代码,可是发现UDP的读取方式不是“每个客户端都有不同的Socket”,而是服务端读取消息的时候使用“面向所有客户端”的socket,那如果像上面第二段代码中的两次读取中,分别受到了来自客户端A和客户端B的两条消息后,我想只对客户端A发送一段话,应该怎么做呢? |
|