Socket本意是插座,在计算机通信领域中被翻译为“套接字”,是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。通过Socket,两台计算机可以通过网络进行信息的传递。
头文件:
详细教程见:socket()函数
int socket (int af, int type, int protocol);
作用: 用来创建套接字,确定套接字的各种属性,以进行网络通信。
1) int af: 地址族(Address Family),又称协议族,也就是 IP 地址类型,常用的有 AF_INET 和 AF_INET6,分别代表IPv4地址和IPv6地址。
2) int type: 数据传输方式或套接字类型,最常见的有SOCK_STREAM和 SOCK_DGRAM。
3) int protocol: 传输协议。对应上述的type
,常用的有IPPROTO_TCP
和 IPPTOTO_UDP
,分别代表TCP和UDP协议。系统会根据af
与type
的值自行选择protocol
,因此该项一般可直接指定为0。
int 类型的套接字文件描述符。
int serv_sock = socket(AF_INET, SOCK_STREAM, 0);
1、socket()函数用法详解:创建套接字
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
作用: 用于服务端将通信的地址和端口绑定到 socket
上。只有这样,流经该 ip地址和端口的数据才能交给该socket
处理。
1) int sockfd: 用来标识服务端套接字,由socket函数返回的文件描述符。
2) struct sockaddr *addr: 用来保存服务端套接字信息(包括IP和端口等)。
3) socklen_t *addrlen: 表示addr
地址空间大小,与int*类型一样,可由 sizeof() 计算得出。
1、bind()和connect()函数:绑定套接字并建立连接
int connect(int sock, struct sockaddr *serv_addr, socklen_t addrlen);
作用: 用于客户端使用与服务端建立连接,参数与bind()函数参数完全一致。
int listen(int sockfd, int backlog);
作用: 把一个未连接的套接字转换成被动套接字,使其可以接受来自其他主动套接字的连接请求,并限制Server程序调用accept函数之前的最大连接数。
1) int sockfd: 由socket函数返回,要被listen函数作用的套接字文件描述符。
2) int backlog: 内核进程在自己的空间里维护的一个跟踪已完成连接但服务器进程还没有接手处理或正在进行的连接的队列的大小。backlog告诉内核使用这个数值作为队列大小的上限。
返回:0──成功, -1──失败
1、网络编程socket之listen函数
2、Socket编程之listen函数