winsock第一個版本使用sockaddr來強迫使用特定的尋址方式,這樣添加其餘的協議就不可能了函數
1 struct sockaddr 2 { 3 u_short sa_family;//地址家族 4 char sa_data[14];//不一樣的地址家族,不一樣 5 };
在winscok中 應用程序經過SOCKADDR_IN結構來指定IP地址和端口號spa
1 struct scockaddr_in{ 2 short sin_family;//地址家族 3 u_short sin_port;//端口號 4 struct in_addr sin_addr;//IP地址 5 char sin_zero[8];//空字節 設爲0 6 };
端口號:code
0 - 1023 :由IANA管理,保留爲公共的服務還用blog
1023 - 49151 : 是普通的用戶註冊端口號,由IANA列出io
49152 - 65535 : 動態/私有的端口號class
普通用戶應用程序應該選擇:1024-49151二進制
自由使用:49 152 - 65 535nio
sin_addr中描述IP地址:程序
結構定義以下:數據
struct in_addr{ union{ struct{u_char s_b1,s_b2,s_b3,s_b4;} S_un_b; struct{u_short s_w1,sw_2;}S_un_w; u_long S_addr; }S_un; };
32位與aa.bb.cc.dd之間的轉換,能夠經過下面函數完成
unsinged long inet_addr(const char*cp);//aa.bb.cc.dd 轉爲成爲 32位二進制 char * inet_ntoa(struct in_addr in);//將32位二進制 轉化成爲 aa.bb.cc.dd
字節順序: Intel x86使用小尾順序
TCP/IP統一規定使用 大尾方式 傳輸數據