有這么一個需求,監(jiān)聽一個UDP端口,UDP報文從不同的客戶端發(fā)送過來,
收到報文后將報文轉發(fā)到非發(fā)送者的其它UDP客戶端那邊
現(xiàn)在問題就在于怎么用服務端這個UDP接收的socket發(fā)送內(nèi)容給不同的其它UDP客戶端,workerman有封裝方法這么做么,我看到的
connection->send() 都是發(fā)送消息回當前發(fā)送UDP報文過來的客戶端
發(fā)到其它客戶端這個估計有點難度,因為其它客戶端可能在局域網(wǎng)里,udp又是無連接的,如果服務端到其它客戶端沒打通udp通道,基本無法給他發(fā)送的。
如果客戶端是暴露在外網(wǎng)的,并且監(jiān)聽了udp端口,這種可以發(fā)。大概這樣發(fā),沒測試過,你試下吧。
$client = stream_socket_client('udp://ip:port');
fwrite($client, $data);
感謝回復 我在問題中忽略了很多細節(jié) 客戶端?;钜约翱蛇_性都做了處理 以及發(fā)過來數(shù)據(jù)的客戶端IP端口等進行了記錄 這個可達性本身沒問題 現(xiàn)在的問題重點是:
如何用workerman自身的監(jiān)聽UDP的進程本身發(fā)數(shù)據(jù)回給各個其它的客戶端,C中有方法可以直接回給指定IP和端口的方法,沒有注意到php中哪個方法可用,sendto方法視乎是最接近的,但是沒看明白在哪個參數(shù)配置對方的IP和端口