一、
字節序:多字節數據在計算機內存中存儲或者網絡傳輸時各字節的存儲順序
主機序 //網絡序
常見的字節序:Little endian (小端)將低序字節存儲在起始地址
大端:將高位字節存儲在起始地址
htonl(host to net long)/htons/ntohs/ntohl大小端模式的轉換
二、IP地址及端口號
struct sockaddr
{
short int sa_family;
char sa_data[14];
}
for ipv4
struct sockaddr_in /*INET*/
{
sa_family_t sin_family;
struct in_addr sin_addr;
unsigned short int sin_port;
}
struct in_addr
{
uint32_t s_addr;
}
struct sockaddr_un /*本地UNIX*/
{
sa_family_t sun_family;
char sun_path[108];
}
三、IP地址的轉換
int inet_aton(const char *cp, struct in_addr inp);
in_addr_t inet_addr(const char *cp);
int inet_ntoa(const char *cp, struct in_addr *inp);
四、DNS –HostName
struct hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#define h_addr h_addr_list[0]
}
struct hostent *gethostbyname(const char *name);
五、TCP編程
服務器socket、bind、listen、accept、send/recv、close
客戶端socket、connect、send/recv、close
不通過IP,而通過gethostbyname來請求服務器端: 無法連接是因爲沒有啓動daytime服務;解決辦法:安裝xinetd、修改/etc/xinetd.d/daytime文件,將兩個disable 的值yes改爲no,然後重啓/etc/init.d/xinetd restart
六、UDP編程
服務器socket、bind、recvfrom、處理、sendto、close
客服端socket、sendto、recvfrom、close