




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、TCP/IP网络编程网络编程项目化教程项目化教程唐四薪 主编清华大学出版社2019.10课程介绍课程介绍v课程名:基于课程名:基于TCP/IP的网络程序设计的网络程序设计v学时:学时:48学时学时(讲授讲授32学时学时+上机上机16学时学时)v课程性质:必修课程性质:必修v考试:考试:闭卷闭卷,第第20周周项目项目1网络编程的实现原理网络编程的实现原理v1.1网络程序的类型与应用领域网络程序的类型与应用领域v1.2套接字及其种类套接字及其种类v1.3VC编程基础知识编程基础知识问题导入问题导入像像QQ这样的网络这样的网络通信软件是如何制通信软件是如何制作的呢作的呢网络编程的核心技术网络编程的核
2、心技术-Socket编程编程vSocket:TCP/IP协议的编程接口协议的编程接口v起源于起源于Unix系统的系统的BerkeleySocketsvWinSock=Windows+SocketsvSocket:插座,使用:插座,使用Socket可不需要了解底层可不需要了解底层的实现细节的实现细节学习学习Socket编程的意义编程的意义v以慕课网(以慕课网()为例,关于)为例,关于Socket编程的相关课程多达编程的相关课程多达9门门v掌握了掌握了Socket技术,就等于掌握了推送、技术,就等于掌握了推送、IM、物联网等领域的命脉物联网等领域的命脉v学习本课程后物联网相关通信工作不再是难题,学
3、习本课程后物联网相关通信工作不再是难题,且你有能力成为物联网协议的制定者且你有能力成为物联网协议的制定者v学习本课程后学习本课程后你可以尽情去吹牛,因为你学到你可以尽情去吹牛,因为你学到的技术一听就是大牛的技术一听就是大牛本节课内容本节课内容v网络程序的体系结构网络程序的体系结构v套接字的含义与分类套接字的含义与分类v套接字接口的位置及实现方式套接字接口的位置及实现方式软件的体系结构软件的体系结构软件结构的演变软件结构的演变单机软件单机软件网络软件网络软件C/S结构结构B/S结构结构P2P结构结构分布式系统分布式系统DistributedSystemC/S结构和结构和B/S结构结构vC/S(C
4、lient/Server),客户端,客户端/服务器结构服务器结构vB/S(Browser/Server),浏览器浏览器/服务器结构服务器结构 C/S结构和结构和B/S结构结构vC/S: 每台客户端电脑都要安装客户端软件每台客户端电脑都要安装客户端软件 客户端单独设计,功能强大客户端单独设计,功能强大vB/S: 易于部署,跨平台易于部署,跨平台 网页界面难于实现复杂的操作(如右键菜单,树网页界面难于实现复杂的操作(如右键菜单,树形导航等)形导航等) 每次操作要刷新网页,响应速度慢每次操作要刷新网页,响应速度慢B/S编程的本质编程的本质v基于基于HTTP的网络编程的网络编程(又名(又名Web编程)
5、编程) 简单:编程语言简单:编程语言PHP、ASP、JSPHTTP请求请求HTTP响应响应HTTP:超文本传输协议:超文本传输协议B/S结构的缺点:单向通信结构的缺点:单向通信C/S编程的本质编程的本质vC/S编程:基于编程:基于TCP/IP的网络编程的网络编程 又名:又名:Socket编程,套接字编程编程,套接字编程 编程语言编程语言Java、C+、Python、C#P2P结构结构vP2P(PeertoPeer):点对点结构点对点结构(对等网络结对等网络结构构)v每台计算机同时作为客户端和服务器端。两个或每台计算机同时作为客户端和服务器端。两个或多个客户端不经过服务器而直接通信的架构。多个客
6、户端不经过服务器而直接通信的架构。v优点:负载均衡,高性价比,隐私保护性好优点:负载均衡,高性价比,隐私保护性好v缺点:尚无统一的标准缺点:尚无统一的标准适用场合适用场合vC/S结构:适合于需要用到网络底层协议,或者结构:适合于需要用到网络底层协议,或者无法运行浏览器的情况下。无法运行浏览器的情况下。侧重于双向通信、控侧重于双向通信、控制制vB/S结构:适合于信息发布,信息处理,数据库结构:适合于信息发布,信息处理,数据库访问。访问。侧重于信息发布侧重于信息发布vP2P结构:适合于每台计算机都同时需要收发信结构:适合于每台计算机都同时需要收发信息息C/S与与B/S结构软件的用途结构软件的用途v
7、C/S结构的程序大量应用于工业控制软件,如监结构的程序大量应用于工业控制软件,如监控系统、医疗软件、超市控系统、医疗软件、超市POS软件、木马程序软件、木马程序等。等。1.工业控制软件工业控制软件2.物联网通信软件物联网通信软件v一种公用的汽车全景影像服务系统一种公用的汽车全景影像服务系统3.计算机等级考试系统计算机等级考试系统v服务器端和客户端之间需要能够双向通信。服务器端和客户端之间需要能够双向通信。v服务器端还要能够禁止客户端在做选择题时进行服务器端还要能够禁止客户端在做选择题时进行程序切换。程序切换。推送推送B/S结构软件的用途结构软件的用途vB/S结构的软件主要用于开发各种管理信息系
8、统结构的软件主要用于开发各种管理信息系统(包括网站)。(包括网站)。网络软件的分类网络软件的分类vC/SvB/SvP2Pv客户端软件客户端软件v服务器软件服务器软件v股票交易软件股票交易软件v视频会议系统视频会议系统v视频监控软件视频监控软件v管理信息系统管理信息系统v迅雷,电驴迅雷,电驴v抢票软件、邮件客户抢票软件、邮件客户端、端、ftp客户端客户端Socket网络编程语言的选择网络编程语言的选择vC+网络编程的优势网络编程的优势 对底层硬件支持好,简单高效、运行效率高。适对底层硬件支持好,简单高效、运行效率高。适合做工业控制软件、物联网软件。合做工业控制软件、物联网软件。 是原生的是原生的
9、Socket编程,可转学编程,可转学Unix网络编程。网络编程。vJava网络编程网络编程 适合安卓平台编程,用来做推送、适合安卓平台编程,用来做推送、IM等。等。vPython网络编程网络编程 代码简单,适合做秒杀软件等客户端代码简单,适合做秒杀软件等客户端1.4.2套接字的含义套接字的含义与分类与分类什么是套接字什么是套接字(Socket)v独立于具体协议的网络编程接口独立于具体协议的网络编程接口v套接字在套接字在TCP/IP模型中位于传输层之上模型中位于传输层之上 主要针对主要针对TCP、UDP协议进行抽象协议进行抽象 不涉及应用层协议不涉及应用层协议2005-10-3027Winsoc
10、k套接字套接字vMicrosoft将将Unix套接字中的大部分函数移植到套接字中的大部分函数移植到Windows操作系统,形成了操作系统,形成了Windows套接字套接字 WinSock:WindowsSocketsvWindows套接字针对套接字针对Windows操作系统的消息操作系统的消息驱动机制,对原有的驱动机制,对原有的Unix套接字进行了扩展,套接字进行了扩展,定义了一部分新的函数定义了一部分新的函数2005-10-3028套接字是网络通信的端点套接字是网络通信的端点v 在网络中,主机在网络中,主机H1上的一个套接字端点(上的一个套接字端点(endpoint)可)可以和主机以和主机H
11、2上的另一个套接字端点进行通信上的另一个套接字端点进行通信v IP地址、端口号和协议名可以唯一确定一个套接字地址、端口号和协议名可以唯一确定一个套接字TCP/IP Socket网络编程网络编程29/83套接字的分类套接字的分类v流式套接字流式套接字(SOCK_STREAM) 提供了一个面向连接、可靠的数据传输服务,数提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。据无差错、无重复的发送且按发送顺序接收。v数据报套接字数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立的形式被发送,提供无连接服务。数据包以独立的形式被发送,不提供无差错保证,数据可
12、能丢失或重复,顺序不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。发送,可能乱序接收。v原始套接字原始套接字(SOCK_RAW) 可以对较低层次协议,如可以对较低层次协议,如IP直接访问。直接访问。2005-10-3030套接字在套接字在TCP/IP模型中的位置模型中的位置主机至网络层以太网令牌环帧中继ATM.互联层IPARPICMPIGMP传输层TCPUDP应用层套接字 SocketsSocket的位置的位置网络通信程序如何标识自己和对方网络通信程序如何标识自己和对方?vIP地址地址:端口号端口号网络协议网络协议v主机主机程序程序 TCP或或UDPv全相关全相关(五元组)(五元
13、组) IP地址地址:端口号端口号网络协议网络协议IP地址地址:端口号端口号 客户端客户端进程进程服务器端服务器端进程进程v半相关半相关TCP/IP Socket网络编程网络编程33/83基本函数基本函数vSocket网络通信的基本函数网络通信的基本函数 socket创建套接字创建套接字 bind绑定本机地址和端口绑定本机地址和端口 listen监听端口监听端口 accept接受连接接受连接 connect建立连接建立连接 recv数据接收数据接收 send数据发送数据发送 closesocket关闭套接字关闭套接字WinSock的工作流程的工作流程WinSock编程学习步骤编程学习步骤v编写编
14、写Win32Console版的网络通信程序版的网络通信程序v编写编写Win32Application版的网络通信程序版的网络通信程序v编写编写MFC版的网络通信程序版的网络通信程序v理解理解同步同步和和异步异步,编写,编写异步通信异步通信的网络程序的网络程序v利用多线程编写利用多线程编写一对多一对多的网络程序的网络程序Socket编程的难点编程的难点vWinSock的的5种种I/O模型模型 WSAAsyncSelect模型模型 WSAEventSelect模型模型 Select模型模型 重叠重叠I/O模型模型 IO完成端口模型完成端口模型vVC多线程编程多线程编程 创建线程创建线程 线程之间的
15、参数传递线程之间的参数传递实现异步通信实现异步通信实现一对多通信实现一对多通信1.3VC编程基础编程基础知识知识VC中声明字符串的方法中声明字符串的方法vcharuser10;vcharuser10=小猫叫小猫叫vcharuser=小猫叫小猫叫vconstchar*wel=“欢迎您,尊敬的欢迎您,尊敬的”/声明字符串常量,该字符串不能修改声明字符串常量,该字符串不能修改vchar*Buf=newcharlen;/字符串长度为变量字符串长度为变量len字符串处理函数字符串处理函数vstrcat:连接两个字符串,并将连接后的字符串:连接两个字符串,并将连接后的字符串保存到第一个参数代表的字符串中。
16、保存到第一个参数代表的字符串中。vstrcmp:比较字符串,常用于判断字符串是否:比较字符串,常用于判断字符串是否为某个值为某个值vstrlen:获取字符串的长度,不包括字符串末尾:获取字符串的长度,不包括字符串末尾的的0。vstrcpy:复制字符串,常用于给字符串重新赋值。:复制字符串,常用于给字符串重新赋值。vsprintf:用于将多个字符串变量或其他变量连:用于将多个字符串变量或其他变量连接在一起组成一个新的字符串。接在一起组成一个新的字符串。vsizeof:这是个运算符,求所占的内存空间:这是个运算符,求所占的内存空间VC+新增的数据类型新增的数据类型数据类型数据类型对应的基本数据类型
17、对应的基本数据类型说明说明BSTRunsigned short*16位字符指针位字符指针BYTEunsigned char8位无符号整数位无符号整数 DWORDunsigned long 32位无符号整数,段地址和相关的位无符号整数,段地址和相关的偏移地址偏移地址LONGlong32位带符号整数位带符号整数LPARAMunsigned int作为参数传递给窗口过程或回调函作为参数传递给窗口过程或回调函数的数的32位值位值LPCSTRconst char* 指向字符串常量的指向字符串常量的32位指针位指针LPSTRchar* 指向字符串的指向字符串的32位指针位指针LPVOIDvoid* 指向未
18、定义的类型的指向未定义的类型的32位指针位指针UNITunsigned int 32位无符号整数位无符号整数WORD unsigned short16位无符号整数位无符号整数WPARAM unsigned int 作为参数传递给窗口过程或回调函作为参数传递给窗口过程或回调函数的数的32位值位值LP表示指针表示指针习习题题v 1.对于程序,对于程序,charstr=“abcde”;inta=strlen(str);intb=sizeof(str);,则,则a和和b的值分别是:的值分别是:vA.5,5B.5,6C.6,5D.5,4v 2.在程序中要使用在程序中要使用cin函数,则应包含下列哪个头文件函数,则应包含
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模具行业购销合同范本
- 房屋阁楼赠送合同范本
- 预防呼吸道传染病班会
- 建筑个人述职报告
- 长乐市社会治理综合应急指挥中心项目建议书
- 广东省东莞市高中名校2025届高三双基考试语文试题含解析
- 东北电力大学《数控编程与加工》2023-2024学年第二学期期末试卷
- 山西信息职业技术学院《教师礼仪与形体训练》2023-2024学年第二学期期末试卷
- 青岛恒星科技学院《方剂学C》2023-2024学年第二学期期末试卷
- 科尔沁艺术职业学院《工程测量课程设计》2023-2024学年第二学期期末试卷
- 安徽省 2025 年九年级中考历史模拟试卷二(含答案)
- 2025年国家铁路局机关服务中心招聘7人历年自考难、易点模拟试卷(共500题附带答案详解)
- 河北省石家庄市2025届高三下学期3月一模试题 数学 含答案
- 湖南中烟工业有限责任公司招聘考试真题2024
- 电梯维护保养
- 2025年河南应用技术职业学院单招职业技能测试题库汇编
- 七年级数学下册 第2章 单元测试卷(浙教版 2025年春)
- DB11-T 1093-2014 液化天然气汽车箱式橇装加注装置安全技术要求
- 2024中考地理时事热点强化训练
- 2025年春新人教版数学七年级下册课件 9.2.2 用坐标表示平移 第2课时 由坐标变化判断图形平移
- 国家铁路局工程质量监督中心面向社会公开招聘5人高频重点提升(共500题)附带答案详解
评论
0/150
提交评论