客戶端連接到了服務器的10080埠,在服務器上看到客戶端的連接IP是【25.77.148.91:8679】。
這個IP是客戶端的IP,而這個埠號8679是客戶端自己隨機分配的。這個埠號服務器能獲取到,但客戶端自己如何獲取到這個埠號?用什么API獲得?
uj5u.com熱心網友回復:
getpeername 是對accept回傳的socket 獲得對方的ip port
struct sockaddr_in sa;
int len = sizeof(sa);
getpeername(AcceptSocket, (struct sockaddr *)&sa, &len);
printf("對方IP %s:%d", inet_ntoa(sa.sin_addr),ntohs( sa.sin_port) );
uj5u.com熱心網友回復:
getsocknameuj5u.com熱心網友回復:
客戶端自己如何獲取到這個埠號? getsocknameuj5u.com熱心網友回復:
請問:客戶端呼叫getsockname后,得到的是【隨機分配的埠號碼】 還是連接服務器時候的那個【10080】?
uj5u.com熱心網友回復:
getsockname是獲取連接服務器的埠號,也就是連接時候的【10080】埠,無法獲取到【8679】。有什么辦法可以獲取到8679呢?uj5u.com熱心網友回復:
這個是外網IP? 如果服務器端程式也是自己做的, 那么就通信回來, 其他的訪問可以回傳IP地址的服務器試試看 (如http://pv.sohu.com/cityjson?ie=utf-8)uj5u.com熱心網友回復:
從client側是無法獲取到自己隨機分配連接server側的埠號的uj5u.com熱心網友回復:
服務器回傳客戶端埠get√uj5u.com熱心網友回復:
要獲得自己在服務端的埠, 估計只能 自定義應用層協議,讓服務器回傳.轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/57529.html
標籤:網絡編程
上一篇:通過CHttpFile read讀取出來的資料有重復內容是怎么回事?
下一篇:meshlab原始碼移植
