扣扣技術交流羣:460189483
基於Linux C++ 開發udp通訊的一些總結,主要是記性不好,寫下來防止後面又忘記了,需要重新找資料浪費時間,先了解一下基本數據結構
一、sockaddr和sockaddr_in結構
程序員不應操作sockaddr結構,sockaddr是給操作系統用的
程序員應使用sockaddr_in來表示地址,sockaddr_in區分了地址和端口,使用更方便。
struct sockaddr {
unsigned short sa_family; // 2 bytes address family, AF_xxx unsiged short
char sa_data[14]; // 14 bytes of protocol address
};
struct sockaddr_in {
short sin_family; // 2 bytes e.g. AF_INET, AF_INET6
unsigned short sin_port; // 2 bytes e.g. htons(3490)
struct in_addr sin_addr; // 4 bytes see struct in_addr, below
char sin_zero[8]; // 8 bytes zero this if you want to
};
struct in_addr {
unsigned long s_addr; // 4 bytes load with inet_pton()
};
它們結構之間表示如下圖。