2
我正在实现基于perl的UDP服务器/客户端模型。套接字函数recv()和send()用于服务器/客户端通信。似乎send()从recv()调用中获取返回地址,我只能让服务器回应发送初始请求的客户端。不过,我正在寻找服务器将数据发送给所有活动客户端,而不是仅发送源客户端。如果每个活动客户端的peer_address和peer_port是已知的,我怎样才能使用perl send()将数据包路由到特定的客户端? 一些尝试:Perl将UDP包发送给多个活动客户端
foreach (@active_clients) {
#$_->{peer_socket}->send($data);
#$socket->send($_->{peer_socket}, $data, 0, $_->{peer_addr});
#send($_->{peer_socket}, $data, 0, $_->{peer_addr});
$socket->send($data) #Echos back to source client
}
的Perldoc send简要介绍了参数的传递。我试图采用这种方法,结果是1)客户端只是接收套接字glob对象,或者2)从未收到数据包或者3)抛出错误。如何使用send()路由到已知客户端的任何示例都将非常感谢。
谢谢伯努瓦。我打电话给recv有点不同: $ socket-> recv($ received_data,1024); 但是,使用您发布的方法,我能够成功捕获所有活动客户端并向他们广播消息。 – Burns 2013-05-12 21:59:44