gpt4 book ai didi

Perl send() UDP 数据包到多个事件客户端

转载 作者:行者123 更新时间:2023-12-04 04:58:20 25 4
gpt4 key购买 nike

我正在实现一个基于 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() 路由到已知客户端的示例都将不胜感激。

最佳答案

是的,只需将地址存储在某个地方并回答它们:

# receiving some packets
while (my $a = recv($sock, $buf, 8192, 0)) {
print "Received $buf\n";
push @addrs, $a;
# exit at some point
}

# send the answers
for my $a (@addrs) {
send($sock, "OK", 0, $a);
}

关于Perl send() UDP 数据包到多个事件客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16467054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com