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