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