TCP协议的编程流程
TCP协议的编程流程:
服务器端
int socket();//创建一个套接字,用于监听客户端的连接
定义一个表示服务器的地址结构的变量
int bind();//将创建的监听套接字与服务器的地址信息绑定
int listen();//分配内核资源,然后启动监听
ps:listen的第二个参数是指定内核分配的维护已完成连接的客户端的个数
内核分配两个队列:1、正在完成连接的队列
2、已完成连接的队列
int accept();//accept不是和一个客户端完成连接,从内核维护的已完成连接的队列中获取一个连接而已,返回一个与客户端连接的socket
int recv();
int send();
int close();//参数是连接socket,意味着关闭的是与一个客户端的连接
int close();//参数是监听socket,意味着服务器程序关闭
客户端
int socket();
int connect();//与服务器连接
int send();
int recv();
int close();
连接服务器与客户端:
补充:1、网络中的地址结构
struct sockaddr_in
{
int sin_family;//地址簇
short sin_port://端口号
struct in_addr sin_addr;//IP地址
}
struct in_addr
{
u_int32_t s_addr;
}
2、主机字节序和网络字节序
主机:有大端模式也有小端模式
网络:大端模式
函数:htons();//是将主机的无符号短整型数转化为网络字节序