TCP通信相关函数
1.套接字 本质上是一个非负整数,是一种特殊的文件描述符;
2.创建套接字
int socket(int domain,int type,int protocol);
3.IP与端口
(1)IP地址 标识一台计算机,(唯一);
(2)PORT 端口号:是一个unsigned short 类型的无符号整数;
4.创建服务器
(1) 创建套接字 socket();
(2)绑定本机IP地址与端口号; bind();
int bind(int sockfd,const struct sockaddr *addr,socklen_t *addrlen);
struct sockaddr{
sa_family_t sa_family;
char sa_data[14];
};
struct sockaddr_in{
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
};
struct in_addr{
uint32_t s_addr;
};
(3)设置监听套接字; listen();
int listen(int sockfd,int backlog);
(4)等待客户端连接;accept();
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
(5)数据发送接收;read()/write()----recv()/send();
(6)关闭套接字断开连接;close();
5.创建客户端(client)
(1)创建套接字;socket();
(2)绑定本机IP地址与端口号(可省此步,路由器帮做);
(3)向服务器发起连接;
int connect(int socket,const struct sockaddr *addr,socklen_t addrlen);
(4)数据发送、接收;read()/write()-----recv()/send()
(5)关闭套接字; close();
6.字节序 (程序在内存中层出的方式)
(1)大端字节序(ARM、网络通信数据),低位数据存在高地址位;
(2)小端字节序(Intel,x86)本机字节序,地位数据存在低地址位;
(3)数据转换
uint16_t htons(uint16_t data);
uint16_t ntohs(uint16_t data);
in_addr_t inet_addr(const char *cp);
char *inet_ntoa(struct in_addr in);
int atoi(const char *nptr);
char *itoa(uint16_t i);