2 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
recvfrom本身有個(gè)參數(shù)可以獲得發(fā)包方的地址
//-----------------------------------------------
// Bind the socket to any address and the specified port.
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(Port);
RecvAddr.sin_addr.s_addr = htonl(INADDR_ANY); //這個(gè)如果是UDP包的話 可以指定只讀取目標(biāo)地址傳來的包,把 INADDR_ANY改掉。

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
請?jiān)敿?xì)看recvfrom的函數(shù)說明,可通過此函數(shù)得到數(shù)據(jù)發(fā)送者源地址(struct sockaddr *restrict addr),據(jù)此addr就可以判斷是哪個(gè)IP發(fā)送過來的(注意設(shè)置addrlen)
得到數(shù)據(jù)源地址后用inet_ntop轉(zhuǎn)換為字符串就明了
添加回答
舉報(bào)