当前课程知识点:互联网体系结构 > 第二周:Socket网络编程 > UDP范例代码 > Video
好我们接下来来看就是我们怎么样
socket编程来写几个简单的范例程序
在这个程序里面
我们看这个代码是怎么工作的
那我们先来看一下哦
我们先要把我们的这个代码给clone下来
然后我们使用vscode
我们下载的代码打开
看一下
在Lab2里面
我们可以看到这里面有几个.c文件
其中那我们看就是先看UDP
我们可以看一下UDP的这个代码
UDP的代码呢
我们我们看一下这里面
那他就是include了几个文件
其中有比较关键的两个就是type和socket的对吧
你们看这个main里面
我们先是定义了这个
服务器的地址给他定义了变量
然后那我们就定义了一个这个
这个就是客户端的地址结构
因为
UDP他在他的服务器需要接收到客户端的
数据包的时候
他一起同时也拿到了UDP客户端的这个IP地址和端口
我们还有一个数据传输的缓冲区
把这个
对他做了一些初始化
然后主要是这个my_addr也就是服务器的地址
我们地址族设为AF_INET对吧
然后呢
我们这个地址呢
我们是允许连接在本地上的任意IP地址
然后呢
我们端口号呢
我们这地方是用了8000端口
这地方我们用htons
也就是只使用了一个,就是主机字节序顺序转换成网络字节顺序
序列的
然后呢
这边是用socket接口
它就是socket的参数
你可以看到是PF_INET
然后呢
第二个参数
是SOCK_DGRAM也就是指明的是UDP协议
它的返回的套接字描述符我们存储在server sockfd
创建了这个socket之后呢
他就有bind
他首先要指明
就是之前初始化的一个my_address
把他强制类型转化成通用的socket地址
数据结构的指针对吧
然后呢
把它绑定到我们刚刚创建的socket上
绑定好之后
他就是可以接收数据了
他可以接收数据了
要不然我们这地方就有个
在这个套接字描述符上
在这个套接字上接收数据
让我们有buffer
我们把数据接收的数据放在这个buffer这一块存储区里面
然后呢
我们接收到的客户端的地址
瑞奥特拽死
这地方我们就是野爸
就是我们前面定义的结构体变量
把它强制类型转换之后把它传进去
这样的就是内核
那就帮我们把接收到的地址存到这个结构体变量里面
这样我们接收到了就这个就从这儿接收到了接收过完之后
我们就把他
close
对吧也就是服务端
我们这个程序的功能就是就是服务端接收到数据
那我们再来看客户端啊
客户端它是两个是对应起来的
他这边呢
我们这地方也是
创建了一个
就是服务端的
因为他是客户端和服务端是相对的嘛
他这样有一个数据传输的缓冲区
然后那
我们需要帮他初始化
因为我们是在本机两台两个都在本机
所以呢
我们在J二S呢
他都是设置的
是127.0.0.1
还有端口号和服务器应该是这个是一样的
如果不一样的话
那就是没法建立连接的吧
因为他就像你寄信
记得不是你要收信的人的地址
然后呢
这地方是创建
和在服务器端创建是一样的
估计都一样
然后呢
这边把一个字符串
然后开始发送这个字符串
发送这个字符串的,只是输出的发送者
实际的发送字符串呢
在这个send to
他这帮我创建的
然后呢
要传输的要发出去的数据的buffer那段区域
然后就这样,就是取它的长度
我把这一段字符串发出去
发到哪里呢
发到这个
那个地方发送成功的话就close
我们看一下这个这个他在就是
功能怎么实现啊
就是我们看就是
我看他是不是可以正常工作
这地方让我们写了一个简单的
待会儿我们也可以看一下
就是我们编译一下编译没问题的吧
你现在UDP server
他在那wait
我们执行UDP client
我发现这个udp server收到了
发送了一个
就这样
那就是客户端UDP通过服务器来发送了这个数据
他的就是编译的方法也很简单
就是
我们可以手工编译啊
我在这是写了一个简单的
输出的目标是udp server
我们是通过UDP.c把它翻译成
那同样的,udp client,我们这也同样的方法编译
这是两个程序
-课程内容简介
--Video
-网络协议基础
--Video
--Video
--Video
--Video
-上网浏览网页背后的网络通信过程
--Video
--Video
-实验环境安装配置
--Video
-网络相关命令
--Video
--Video
-本周作业
--外部链接
-编译、构建和调试
--Video
--Video
--Video
-Socket接口
--Video
--Video
-UDP范例代码
--Video
-TCP范例代码
--Video
-本周作业
--外部链接
-TCP协议概述
--Video
--Video
-Linux网络协议栈源代码简介
--Video
-Linux系统的编译、构建和调试
--Video
--Video
-TCP协议源代码分析
--Video
-本周作业
--外部链接
-IP协议基础
--Video
-路由表
--Video
-路由转发举例
--Video
-IP协议栈源代码解析
--Video
-路由协议简介
--Video
-网络层数据传输路径解析
--Video
-本周作业
--外部链接
-ARP协议基础
--Video
-ARP解析的过程
--Video
-ARP解析在网络传输过程中的作用
--Video
-ARP协议栈源代码解析
--Video
-本周作业
--外部链接
-以太网基础
--Video
--Video
-交换机的学习、转发和过滤数据库
--Video
-常见二层协议
--Video
-数据链路层在Linux网络协议栈中的一些关键代码分析
--Video
-本周作业
--外部链接
-DNS协议基础
--Video
-DNS域名的存储
--Video
-DNS域名解析过程分析
--Video
-本周作业
--外部链接
-互联网架构设计的最初动机与核心目标
--Video
-互联网架构设计的具体目标及背后重要权衡
--Video
--Video
--Video
-课程考核
--外部链接