我正在实现一个基于 perl 的 UDP 服务器/客户端模型。套接字函数 recv() 和 send() 用于服务器/客户端通信。似乎 send() 从 recv() 调用中获取返回地址,我只能让服务器响应发送初始请求的客户端。但是,我正在寻找服务器将数据发送到所有活动客户端,而不仅仅是源客户端。如果每个活动客户端的 peer_address 和 peer_port 已知,我如何使用 perl send() 将数据包路由到特定客户端?一些尝试:
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() 路由到已知客户端的示例都将不胜感激。