1.Linux网络模型
Linux网络编程--->>>socket套接字的编程
2.TCP网络模型 UDP网络模型
在创建套接字后,服务器与客户端都得初始化网络地址
3.网络编程
服务器端:
//1.1创建socket
if((sockfd = socket(AF_INET, SOCK_STREAM, 0))<0) //IPv4,用于TCP通信
{perror("socket error!");exit(-1);} //确保连接稳定性
//1.2绑定地址
/*初始化地址*/
bzero(&server_addr,sizeof(struct sockaddr_in));//清零
server_addr.sin_family = AF_INET;//协议族
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//跟随网络传输 sin_addr中的成员s_addr 任意ip地址 字节序转换 主机转换为网络字节序
server_addr.sin_port = htons(port);//端口,跟随网络传输
/*绑定地址*/
if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))<0);
//要绑定的地址 地址长度
{perror("bind error!");exit(-1);} //确保连接稳定性
//1.3监听端口
if(listen(sockfd,5)<0); //客户机数目
{perror("listen error!");exit(-1);}
//1.4等待连接
while(1)
{ new_fd = accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size);
//client_addr保存客户端地址 长度的指针
//2.响应客户端请求
while(1) //接收和发送数据 fd与new_fd之间的调序使用
{
read(~)=recv(~,0) 读/接收数据
write(~)=send(~,0) 写/发送数据
//read(new_fd,&cmd,1); //读取操作类型码
//write(~~)
}
close(sockfd);
}
客户端: 实际编程过程中确保稳定连接,配上故障信息
//1.创建socket
sockfd = socket(AF_INET, SOCK_STREAM, 0); //IPv4,用于TCP通信
/*2.1 初始化地址*/
memset(&sockaddr1,0,sizeof(sockaddr1));//清零
sockaddr1.sin_family = AF_INET;//协议族
sockaddr1.sin_addr.s_addr = inet_addr(ipaddr);// 跟随网络传输 sin_addr中的成员s_addr inet_addr:将字符串ip地址转换为整数型ip地址
sockaddr1.sin_port = htons(port);//端口,跟随网络传输,字节序转换 主机转换为网络字节序
//2.连接服务器
connect(sockfd,(struct sockaddr *)&sockaddr1,sizeof(sockaddr1));
//3.发送或接收数据
while(1)
{
command = getchar(); //等待用户输入字符
switch(command)
{1.发送-2.接收-3.退出-quit()}
}
//4.关闭连接
close(sockfd);