项目1网络编程的实现原理_第1页
项目1网络编程的实现原理_第2页
项目1网络编程的实现原理_第3页
项目1网络编程的实现原理_第4页
项目1网络编程的实现原理_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TCP/IP网络编程项目化教程,唐四薪 主编,清华大学出版社2019.10,课程介绍,课程名:基于TCP/IP的网络程序设计 学时:48学时(讲授32学时+上机16学时) 课程性质:必修 考试:闭卷 ,第20周,项目1 网络编程的实现原理,1.1 网络程序的类型与应用领域 1.2 套接字及其种类 1.3 VC编程基础知识,问题导入,像QQ这样的网络通信软件是如何制作的呢,网络编程的核心技术-Socket编程,Socket:TCP/IP协议的编程接口 起源于Unix 系统的Berkeley Sockets WinSock=Windows + Sockets Socket:插座,使用Socket可

2、不需要了解底层的实现细节,学习Socket编程的意义,以慕课网()为例,关于Socket编程的相关课程多达9门 掌握了Socket技术,就等于掌握了推送、IM、物联网等领域的命脉 学习本课程后物联网相关通信工作不再是难题,且你有能力成为物联网协议的制定者,学习本课程后你可以尽情去吹牛,因为你学到的技术一听就是大牛,本节课内容,网络程序的体系结构 套接字的含义与分类 套接字接口的位置及实现方式,软件的体系结构,软件结构的演变,单机软件,网络软件,C/S结构,B/S结构,P2P结构,分布式系统 Distributed System,C/S结构和B/S结构,C/S(Client/Server),客户

3、端/服务器结构 B/S (Browser/Server ),浏览器/服务器结构,C/S结构,B/S结构,C/S结构和B/S结构,C/S: 每台客户端电脑都要安装客户端软件 客户端单独设计,功能强大 B/S: 易于部署,跨平台 网页界面难于实现复杂的操作(如右键菜单,树形导航等) 每次操作要刷新网页,响应速度慢,B/S编程的本质,基于HTTP的网络编程 (又名Web编程) 简单:编程语言PHP、ASP、JSP,浏览器,服务器,HTTP请求,HTTP响应,前端,后端,HTTP:超文本传输协议,B/S结构的缺点:单向通信,C/S编程的本质,C/S编程:基于TCP/IP的网络编程 又名:Socket编

4、程,套接字编程 编程语言 Java、C+、Python、C#,P2P结构,P2P(Peer to Peer):点对点结构(对等网络结构) 每台计算机同时作为客户端和服务器端。两个或多个客户端不经过服务器而直接通信的架构。 优点:负载均衡,高性价比,隐私保护性好 缺点:尚无统一的标准,适用场合,C/S结构:适合于需要用到网络底层协议,或者无法运行浏览器的情况下。侧重于双向通信、控制 B/S结构:适合于信息发布,信息处理,数据库访问。侧重于信息发布 P2P结构:适合于每台计算机都同时需要收发信息,C/S与B/S结构软件的用途,C/S结构的程序大量应用于工业控制软件,如监控系统、医疗软件、超市POS

5、软件、木马程序等。,1. 工业控制软件,2. 物联网通信软件,一种公用的汽车全景影像服务系统,3. 计算机等级考试系统,服务器端和客户端之间需要能够双向通信。 服务器端还要能够禁止客户端在做选择题时进行程序切换。,推送,B/S结构软件的用途,B/S结构的软件主要用于开发各种管理信息系统(包括网站)。,网络软件的分类,C/S B/S P2P 客户端软件 服务器软件,股票交易软件 视频会议系统 视频监控软件 管理信息系统 迅雷,电驴 抢票软件、邮件客户端、ftp客户端,Socket网络编程语言的选择,C+网络编程的优势 对底层硬件支持好,简单高效、运行效率高。适合做工业控制软件、物联网软件。 是原

6、生的Socket编程,可转学Unix网络编程。 Java网络编程 适合安卓平台编程,用来做推送、IM等。 Python网络编程 代码简单,适合做秒杀软件等客户端,1.4.2 套接字的含义与分类,什么是套接字(Socket),独立于具体协议的网络编程接口 套接字在TCP/IP模型中位于传输层之上 主要针对TCP、UDP协议进行抽象 不涉及应用层协议,2005-10-30,27,Winsock套接字,Microsoft将Unix套接字中的大部分函数移植到Windows操作系统,形成了Windows套接字 WinSock:Windows Sockets Windows套接字针对Windows操作系统

7、的消息驱动机制,对原有的Unix套接字进行了扩展,定义了一部分新的函数,2005-10-30,28,套接字是网络通信的端点,在网络中,主机H1上的一个套接字端点(endpoint)可以和主机H2上的另一个套接字端点进行通信 IP地址、端口号和协议名可以唯一确定一个套接字,TCP/IP Socket网络编程,29/83,套接字的分类,流式套接字(SOCK_STREAM) 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。 数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。

8、原始套接字(SOCK_RAW) 可以对较低层次协议,如IP直接访问。,2005-10-30,30,套接字在TCP/IP模型中的位置,主机至网络层,互联层,IP,ARP,ICMP,IGMP,传输层,TCP,UDP,应用层,套接字 Sockets,Socket的位置,网络通信程序如何标识自己和对方?,IP地址: 端口号 网络协议 主机程序 TCP或UDP 全相关(五元组) IP地址: 端口号 网络协议 IP地址: 端口号 客户端 进程服务器端进程,半相关,TCP/IP Socket网络编程,33/83,基本函数,Socket网络通信的基本函数 socket创建套接字 bind绑定本机地址和端口 l

9、isten监听端口 accept接受连接 connect建立连接 recv数据接收 send数据发送 closesocket关闭套接字,WinSock的工作流程,WinSock编程学习步骤,编写Win32 Console版的网络通信程序 编写Win32 Application版的网络通信程序 编写MFC版的网络通信程序 理解同步和异步,编写异步通信的网络程序 利用多线程编写一对多的网络程序,Socket编程的难点,WinSock的5种I/O模型 WSAAsyncSelect模型 WSAEventSelect模型 Select模型 重叠I/O模型 IO完成端口模型 VC多线程编程 创建线程 线程

10、之间的参数传递,实现异步通信,实现一对多通信,1.3 VC编程基础知识,VC中声明字符串的方法,char user10; char user10= 小猫叫 char user= 小猫叫 const char * wel=“欢迎您,尊敬的”/声明字符串常量,该字符串不能修改 char* Buf= new charlen; /字符串长度为变量len,字符串处理函数,strcat:连接两个字符串,并将连接后的字符串保存到第一个参数代表的字符串中。 strcmp:比较字符串,常用于判断字符串是否为某个值 strlen:获取字符串的长度,不包括字符串末尾的0。 strcpy:复制字符串,常用于给字符串重新赋值。 sprintf:用于将多个字符串变量或其他变量连接在一起组成一个新的字符串。 sizeof:这是个运算符,求所占的内存空间,VC+新增的数据类型,LP表示指针,习 题,1.对于程序,char str=“abcde”; int a=strlen(str); int b=sizeof(str);,则a和b的值分别是: A. 5,5B. 5,6C. 6,5D.5,4 2. 在程序中要使用cin函数,则应包含下列哪个头文件( ) A. stdio.h B. stdlib.h C. iostream.h D. windows.h 3. 有语句:char se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论