相关函数:socket、bind、listen、connect、accept、send、recv、close、shutdown
其函数在Linux下的头文件为:#include<sys/socket.h>
套接字描述符 :套接字是通信端点的抽象,如使用文件描述符访问文件,应用程序用套接字描述符访问套接字。应用程序通过访问该函数创建的套接字实现对数据的发送和接收。套接字描述符在UNIX系统被当为一种文件描述符。
1.创建一个套接字,调用socket函数
函数原型:int socket (int domain, int type, int protocal);
返回值:若函数调用成功,返回套接字描述符;若出错,返回-1。
1)参数domain:确定通信的特性,包括地址格式。各个域都有自己表示地址的格式,而表示各个域的常数都以AF_开头,意指地址族。
| 域domain | 描述 |
| AF_INET | IPv4因特网域 |
| AF_INET6 | IPv6因特网域 |
| AF_UNIX | UNIX域 |
| AF_UPSPEC | 未指定 |
2) 参数type:确定套接字的类型,进一步确定通信特征。
| 类型type | 描述 |
| SOCK_DGRAM | 支持UDP连接(无连接状态的消息) |
| SOCK_RAW | RAW类型,提供原始网络协议访问 |
| SOCK_SEQPACKET | 序列化包,提供一个序列化的、可靠的、双向的基本连接的数据传输通道,数据长度定常。每次调用读系统调用时数据需要将全部数据读出 |
| SOCK_STREAM | Tcp连接,提供序列化的、可靠的、双向连接的字节流。支持带外数据传输 |
3) 参数protocol:通常是0,表示为给定的域和套接字类型选择默认协议。