socket()
头文件:
#include <sys/types.h>
#include <sys/socket.h>
语法:
int socket(int domine,int type,int protocol);
参数:
int domin:即协议域,如AF_INET(IPV4)、AF_INET6(IPV6)等等
int type:是套接口类型,主要SOCK_STREAM(TCP)、SOCK_DGRAM(UDP)
int protocol:指定协议。常用的协议有,IPPROTO_TCP、IPPTOTO_UDP等,通常情况系设为0。
返回值:
成功:返回套接字描述符(套接字的索引)
失败:-1
sockaddr_in 结构体
头文件:
#include<netinet/in.h>
原型:
struct sockaddr_in
{
sa_family_t sin_family; //地址族
uint16_t sin_port; //16位TCP/UDP端口号
struct in_addr sin_addr; //32位IP地址
char sin_zero[8]; //不使用
};
struct in_addr
{
In_addr_t s_addr; //32位IPv4地址
};
bind()
头文件:
#include<sys/socket.h>
语法:
int bind(int sockfd, const struct sockaddr, socklen_t addrlen);
参数:
int sockfd:套接字的索引
const struct sockaddr:一个指向特定协议的地址结构的指针
socklen_t addrlen:该地址结构的长度
listen()
头文件:
#include<sys/socket.h>
语法:
int listen(int sockfd, int backlog);
参数:
int sockfd:套接字的索引
int backlog:连接队列内核的上限
返回值:
成功:0
失败:-1
accept()
头文件:
<sys/types.h>
<sys/socket.h>
语法:
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
参数:
int sockfd:套接字的索引
struct sockaddr *addr:指向结构体sockaddr的指针
socklen_t *addrlen:addr参数指向的内存空间的长度
返回值:
成功:返回套接字描述符(套接字的索引)
失败:-1
read()/write():
头文件:
#include<unistd.h>
语法:
ssize_t read(int fd, void *buf, size_t nbytes);
ssize_t write(int fd, const void *buf, size_t nbytes);
参数:
int fd: 要写入的文件的描述符
void *buf: 为要读取的数据的缓冲区地址()
const void *buf 为要写入数据的缓冲区地址
size_t nbytes 为要写入的数据的字节数
connect()
头文件:
#include<sys/socket.h>
语法:
int connect(int sockfd, const struct sockaddr , socklen_t addrlen);
参数:
int sockfd:套接字的索引
const struct sockaddr:一个指向特定协议的地址结构的指针
socklen_t addrlen:该地址结构的长度
返回值:
成功:0
失败:-1