1、 socket
函数的作用:建立一个新的socket套接字
函数的原型:int socket(int domain,int type, int protocol)
函数的参数:domian:表示使用何种地址类型
AF_INET,IPV4网络协议
AF_INET6,IPV6网络协议
type : SOCK_STREAM, TCP, 面向数据流
SOCK_DGRAM,UDP,使用不连续不可信赖的数据包链接
SOCK_RAW,提供原始网络协议
protocol:指定socket所使用的传输协议编号
函数的返回值:成功:返回socket套接字描述符
失败:-1
头文件:#include
2、 bind
函数的作用:绑定IP地址
函数的原型:int bind(int sockfd, struct sockaddr* my_addr,int addrlen)
函数的参数:sockfd:socket套接字描述符
my_addr:主机地址
addrlen:sockaddr的长度
struct sockaddr
{
unsigned short int sa_family;
char sa_data[14];
};
struct sockaddr_in
{
unsigned short int sin_family;
uint16_t sin_port; //端口号
struct in_addr sin_addr; //IP地址
unsigned char sin_zero[8]; //未使用
};
struct in_addr
{
uint32_t s_addr;
};
头文件:#include
#include
函数的返回值:成功:0;
出错:-1;
3、 listen
函数的作用:侦听网络,等待连接
函数的原型:int listen(int sockfd, int backlog)
函数的参数:sockfd:描述符
backlog:允许接入的客户端数目
函数的返回值:成功:0;
出错:-1;
注意:listen并没有连线,只是设置socket的侦听模式,真正连接的是accept
4、 accpet
函数的作用:接受网络连接,客户端连接,三次握手在这个地方
函数的原型:int accept(int sockfd, struct sockaddr* addr, int *addrlen)
函数的参数:addr:连接成功,填充远程客户端的地址
addrlen:struct sockaddr的长度
函数的返回值:成功:返回新的sock_fd;
失败:-1;
5、 connect
函数的作用:建立socket连接的,通常客户端连接服务器用的
函数的原型:int connect(int sockfd, struct sockaddr * serv_addr,int addrlen);
函数的参数:serv_addr:表示要连接的服务器地址
addrlen:structsockaddr的长度
函数的返回值:成功:0;
出错:-1;
6、 send
函数的作用:经过socket传送数据,向对方发送数据
函数的原型:int send(int sock_fd, const void* msg, int len, unsigned int flags)
函数的参数:sock_fd:accept建立起来的socket描述符,连接远方的IP地址
msg:发送的数据
len:数据长度
flags:设为0
函数的返回值:成功:实际传送出去的字节数
失败:-1;
7、 recv
函数的作用:经过socket接收数据
函数的原型:int recv(int sock_fd, void*buf, int len, unsigned int flags)
函数的参数:sock_fd:accept建立以后的socket套接字描述符
buf:存放的地址
len:接收数据的最大长度
flags:设为0;