Li
uxsocketr
什么是socketr
套接字是通信端点的抽象。可以像操作文件一样的操作。r
套接字的相关描述:协议、本地地址、本地端口、目标地址、目标端口r
1、套接字描述r
套接字和文件一样用描述符来表示。描述符由内核分配,在系统里是唯一r
2、套接字的创建r
i
cludesyssockethr
i
tsocketi
tdemai
i
ttypei
tprotocolr
功能:创建一个套接字r
返回值:成功返回套接字描述符,失败1;r
参数:r
demai
(域)通信的特性,地址的格式。r
UNIXtAF_INET:IPv4因特网r
AF_IPv6:IPv6因特网r
AF_UNIX本地r
AF_LOCALr
AF_FILEr
POSIXPF_INET:IPv4因特网r
PF_IPv6:IPv6因特网r
PF_UNIX本地r
PF_LOCALr
PF_FILEr
type套接字的类型r
SOCK_STREAM:字节流。提供可靠的、面向连接的通信流。TCP协议r
SOCK_DGRAM数据报。提供一个非可靠、无连接的通信服务。UDP协议r
SOCK_ARW:原始套接字。直接访问网络层的协议IP、ICMP。功能强大,主要用作r
开发协议。r
protocol制定套接字使用的协议。TCP、UDP。套接字的类型都有默认协议,通常只为0r
r
另一个:r
i
tsocketpairi
tdemai
i
ttypei
tpeotocoli
tsv2ttr
功能:创建两个套接字,并以连接。ttr
返回值:成功返回0错误返回1;r
通常用于本地的进程间通信。父子进程。t全双工的通信tr
3、套接字读写的控制r
i
cludesyssockethr
i
tshutdow
i
tsockfdi
thowttr
功能:关闭套接字的读写r
返回值:成功返回0错误返回1;r
参数:r
sockfd套接字描述符r
howSHUT_RD关闭读端r
SHUT_WR:关闭写端ttr
4、地址的格式r
地址的格式在不同的域里格式是不同,位了方便使用,把所有的地址强制转化为structsockaddrr
结构进行操作:r
structsockaddrr
sa_family_tsa_famliytt协议族(域)r
chartsa_data14地址r
r
在Li
ux的IPv4的地址结构:structsockaddr_i
r
structsockaddr_i
r
sa_family_tsi
_famliytt协议族(域)r
i
t_port_tsi
_porttt端口号r
structi
_addrsi
_addrIPv4的地址r
u
sig
edcharsi
_zero8清为0,为了和sockaddr大小进行匹配r
r
structi
_addrr
i
_addr_ts_addrIPv4的地址r
tttr
r
注意:r
si
_port和s_addr必须是网络字节序r
5、地址格式的转化r
二进制和点分十进制r
r
chari
et_
topi
tdamai
voidaddrcharstrsockle
_tsizer
功能:把二进制转化成点分十进制字符串格式r
返回值:成功返回地址字符串的指针,失败NULLr
参数:r
damai
协议族r
addr地r