当前课程知识点:互联网体系结构 > 第二周:Socket网络编程 > TCP范例代码 > Video
TCP的server和client
就是我们可以在这儿
也看一下简单看一下它的代码
TCP的要比UDP要复杂得多
我们来看一下这地方
那我们解释就是套接字描述符
我们定义了两个套接字描述符的这玩意儿还有
客户端的地址
结构体与变量
我们这地方就是
就是服务端的
同样我给他声明了他的地址族他的地址
他的端口号是吧
然后那是用
就是创建socket
那就他在这儿就是第二个参数
就是sock stream 是面向连接的
TCP协议爱我们创建了socket
把你bind my addr和这个套接字描述符绑定起来
这样呢就是内核
那就知道我在哪一个地址和对应的端口上监听
恩然后listen对吧
listen就是我监听哪一个就开始被动监听了
就是开始监听刚刚那只是绑定的吧
嗯
然后呢
这边那就是accept
当有客户连接请求来的时候
他就
那么
这个套接字描述符上接收到一个客户
同时
那我还把这个客户的地址端口号的信息给他就是接收过来
这样那我们接收过来之后叫
我们可以把他地址打印出来
当然我们也可以把它端口号打印出来了
我们这儿没有打印
然后呢
我们就给他发送一个消息对吧
给这个客户端client发送一个消息
给他发送消息
然后那就等待在这等待接收者客户端的消息
在这儿等待等待着消息
我们就一接收到他的消息
我们就打印出来
然后呢
我们在给他发送一个
消息再给他回送对应的消息
那我们再来看一下TCP的客户端哈
其实这个客户端的
他是这样
他也是我要就是要先定义和初始化了
这个服务器的就是
也就属于
也就是客户端要连接谁
你要先先定义好的吧
就像我们写信的时候
信封上收信人的地址对吧
你要先写
先写好吧
这个是和UDP是差不多的
我们这边创建socket
这时候那是一个
创建
然后那我这地方不一样了
TCP的客户端是用
也就是服务器的地址和端口号
就这时
那就是背后就是有个三次握手的过程
这后面我们讲TCP协议的时候
我们会仔细的来研究的
然后呢
这地方
当我连接成功了
连接建立了第一个TCP连接了
那么我就在这儿等着接收服务器的消息
接入服务器的消息接到服务器的消息
那我就把这些消息打印出来
然后呢
我这在这儿有一个while
循环这个循环
那就是
就是我发送消息发送一个就是我在输入scanf的吧
我在
键盘输入一个消息
我就发出去对吧
发出去就是当就是
然后呢
在等着服务器返回这个消息,一旦检测到我输入了
检测到quit
这个跳出这个循环就把这个连接关闭掉
这个代码呢
也不相信这个范例非常简单
我们来看一下这个程序啊
我们先来
我们就是刚刚定义好了对吧
我们先来这个看一下这个tcp server
打开
打开那时候
阻塞在哪儿
我们再来看
接到这个连接请求的那时候都可以回
直接发送给他一个消息
我们接到了
然后呢客户端了
就在那等着键盘输入
你说
嗨
那键盘那个服务器端的就会收到
嗨
对吧平常的输出
然后再回送回来
再在直接把他的数据
然后
告诉他
我收到了一嗨
那对方也是
我quit就直接退出了程序
退出程序
退出程序呢
这时
他的close
close服务器
这地方也close
是吧
服务器也close
只是我们这地方设计是怎么设计的
它只是这个服务器
那只服务一个客户端的吧
服务一个客户端也就是当这个while receive的时候
这个TCP链接已经被close掉了
那么这地方的返回
但就会
它会返回一个错误
但也就退出了这个他就close
server也退出了
但是正常的我们一个就是server程序
他应该是还有一个大循环
还有一个大循环
他在这儿就是当这一个客户端退出的时候
我还可以accept
其它的客户端请求
他就是始终在那儿等着接收客户端的连接请求
然后接到一个客户端的连接请求呢
他就专门创建一个线程
或者是使用某种方式
或者是就是IO复用的方式来不停的来处理这个所有的客户端的请求
所以这个那我们这个范例呢
还是比较简单
-课程内容简介
--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
-课程考核
--外部链接