学习目标:
Linux
linux应用开发(高级编程):
(1)数据存储问题:文件和数据库
(2)多任务编程:进程 和 线程
(3)网络编程:tcp udp
学习内容:
网络编程:1、概念2、基于udp协议网络程序设计
学习时间:7.15.2024
学习产出:
一、概念
1、c/s模式:客户端/服务器模式 -- 客户端向服务器发送请求,服务器发送数据给客户端
客户端和服务器两端都要开发
b/s模式:浏览器/服务器模式
仅仅开发服务器端
2、网络通信协议:
iso --> osi(网络互联参开模型)规定协议框架
七层参考模型
tcp/ip协议组 -- 统一互联网(tcp/ip协议详解卷1、卷2、卷3)
四层参考模型:应用层、传输层、网络层、网络接口层
tcp和udp协议都属于传输层
3、ip地址和端口号
ip地址:唯一表示网络中一台计算机的
用32位整数表示,通常用4段点分十进制数字字符串表示
端口号:唯一表示本机中通信的程序
用16位数表示0 -- 65535
二、基于udp协议开发c/s模式程序 -- 发送区没有缓冲区,接收区具有缓冲区
1、服务器端开发流程:
创建套接字(文件描述符)(类似网线链接接口) --> 绑定本地ip和端口号(套接字) --> 接收数据 -->处理数据 --> 发送数据 --> 关闭套接字
2、客户端流程
创建套接字 --> 向目标服务器发送数据 --> 接收数据 --> 关闭套接字
{ int socket(int domain, int type, int protocol);
int bind(int sockfd, struct sockaddr *addr, int addrlen);
struct sockaddr_in{
short sin_family; //协议族
unsigned short sin_port; //端口
struct in_addr sin_addr; //IP地址
char sin_zero[8]; //保留位,以适应struct sockaddr的字节大小
};
int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);
int sendto(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *to, int tolen);
int close(int fd);}