Perl UDP Server 如何区分客户端
时间:2010-12-15
来源:互联网
本帖最后由 r_zack 于 2010-12-15 16:18 编辑
大家好,打听一下,用Perl做的UDP Server,在收到客户端A发来的消息和客户端B发来的消息后,如果想主动给客户端A发消息,要怎么做?
我是用如下代码生成socket:
复制代码
并用如下代码读取内容:
复制代码
我从前只做过TCP Socket,因为可以$client = $socket->accept,所以随时可以方便的往客户端写东西,
最近看了骆驼书上粗浅的讲解后开始试验,后发现,TCP Socket的循环中可以一次循环只处理一个客户端,其他客户端通过fork来处理;
而UDP,我看了cpan上面IO::Socket::INET简陋的文档后完全搞不明白,看了网上的一些示例后才搞明白了如上的代码,可是发现UDP的读取方式不是“每个客户端都有不同的Socket”,而是服务端读取消息的时候使用“面向所有客户端”的socket,那如果像上面第二段代码中的两次读取中,分别受到了来自客户端A和客户端B的两条消息后,我想只对客户端A发送一段话,应该怎么做呢?
大家好,打听一下,用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的循环中可以一次循环只处理一个客户端,其他客户端通过fork来处理;
而UDP,我看了cpan上面IO::Socket::INET简陋的文档后完全搞不明白,看了网上的一些示例后才搞明白了如上的代码,可是发现UDP的读取方式不是“每个客户端都有不同的Socket”,而是服务端读取消息的时候使用“面向所有客户端”的socket,那如果像上面第二段代码中的两次读取中,分别受到了来自客户端A和客户端B的两条消息后,我想只对客户端A发送一段话,应该怎么做呢?
作者: r_zack 发布时间: 2010-12-15
既然udp是无连接的,你主动往对方发送消息不就行了。。
peeraddr ()这个方法可以得到对方地址。
peeraddr ()这个方法可以得到对方地址。
作者: 兰花仙子 发布时间: 2010-12-15
本帖最后由 r_zack 于 2010-12-15 17:12 编辑
谢谢您,我之前从CPAN的文档看到这个函数了,也测试过了,我不明白的地方是,我要怎么给客户端发送消息?
我试过下面这个方法,可是客户端没有收到消息:
$peer = $socket->peeraddr;
$socket->send($text, 0, $peer);
是不是$peer还需要怎么加工一下?
我只知道$peer的位置应该是sockaddr_in格式的值,peeraddr产生的是这个格式的吗?
谢谢您,我之前从CPAN的文档看到这个函数了,也测试过了,我不明白的地方是,我要怎么给客户端发送消息?
我试过下面这个方法,可是客户端没有收到消息:
$peer = $socket->peeraddr;
$socket->send($text, 0, $peer);
是不是$peer还需要怎么加工一下?
我只知道$peer的位置应该是sockaddr_in格式的值,peeraddr产生的是这个格式的吗?
作者: r_zack 发布时间: 2010-12-15
作者: 黑色阳光_cu 发布时间: 2010-12-15
搞定啦!谢谢大家!!
复制代码
- $peer = $socket->recv($buff, 1024, 0);
- $socket->send("Thank you guys!", 0, $peer);
作者: r_zack 发布时间: 2010-12-15
之前看send的文档时没注意,刚才才发现文档里有个链接
http://perldoc.perl.org/perlipc.html#UDP%3a-Message-Passing
早看到就好了……怪我太浮躁了
http://perldoc.perl.org/perlipc.html#UDP%3a-Message-Passing
早看到就好了……怪我太浮躁了
作者: r_zack 发布时间: 2010-12-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28