socket編程中如何實現自動獲取本機IP地址和隨機獲取一個沒有佔用的端口

結構體:
struct sockaddr_in{
  short int sin_family;
  unsigned short int sin_port;
  struct in_addr sin_addr;
  char sin_zero[8];
};該結構體用於指定一個socket的一端【ip+port】

所以local.sin_addr.s_addr是ip地址。

//隨機選擇一個未被使用的端口號

my_addr.sin_port = 0;

//填入本機IP

my_addr.sin_addr = INADDR_ANY;


作爲服務器,你要綁定【bind】到本地的IP地址上進行監聽【listen】,但是你的機器上可能有多塊網卡,也就有多個IP地址,這時候你要選擇綁定在哪個IP上面,如果指定爲INADDR_ANY,那麼系統將綁定默認的網卡【即IP地址】。

作爲客戶端,你要連接【connect】到遠端的服務器,也是要指定遠端服務器的(ip, port)對。
當然,在這種情況下,不可能將IP地址指定爲INADDR_ANY,系統會瘋掉的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章