socket獲取本機位址位址與獲取連線者位址資訊

2021-09-24 23:56:19 字數 545 閱讀 5949

tcp

對於伺服器來說,在bind以後就可以呼叫getsockname來獲取本地位址和埠。getpeername只有在連線建立以後才呼叫,否則不能正確獲得對方位址和埠,所以他的引數描述字一般是連線描述字而非監聽套介面描述字。

對於客戶端來說,在呼叫socket時候核心還不會分配ip和埠,此時呼叫getsockname不會獲得正確的埠和位址(當然鏈結沒建立更不可能呼叫getpeername),當然如果呼叫了bind 以後可以使用getsockname。想要正確得到對方位址(一般客戶端不需要這個功能),則必須在鏈結建立以後,同樣鏈結建立以後,此時客戶端位址和埠就已經被指定,此時是呼叫getpeername的時機。

udp沒有連線的udp不能呼叫getpeername,但是可以呼叫getsockname,和tcp一樣,它的位址和埠不是在呼叫socket就指定了,而是在第一次呼叫sendto函式以後

已經連線的udp,在呼叫connect以後,這2個函式都是可以用的(同樣,getpeername也沒太大意義。如果你不知道對方的位址和埠,不可能會呼叫connect)。

SOCKET 程式設計 獲取本機IP 位址

源程式 include include include include include include include include include include define port 7778 define maxdatasize 1024 int main setsockopt socke...

獲取本機IP位址

cstring strlocalip char szhostname 64 memset szhostname,0x00,sizeof szhostname gethostname szhostname,sizeof szhostname phostent phost gethostbyname s...

獲取本機的位址

剛學網路程式設計,試著做了乙個獲取本機的名及位址的方法,開始怎麼也獲取的不對,原來錯誤在這裡 i longint pointer p h addr list 這句開始少了 pointer 了,因為 h addr list 本來就是乙個指標 pchar,所以取得了這個指標的值後再去獲取這個指標所指向的...