电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

网络编程(Socket套接字编程)_讲义

16页
  • 卖家[上传人]:1818****572
  • 文档编号:120879183
  • 上传时间:2020-02-11
  • 文档格式:DOC
  • 文档大小:479KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 网络编程今日内容介绍u 网络通信协议u UDP通信u TCP通信第1章 网络通信协议通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal传输控制协议/英特网互联协议),它是一个包括TCP协议和IP协议,UDP(User Datagram Protocol)协议和其它一些协议的协议组,在学习具体协议之前首先了解一下TCP/IP协议组的层次结构。在进行数据传输时,要求发送的数据与收到的数据完全一样,这时,就需要在原有的数据上添加很多信息,以保证数据在传输过程中数据格式完全一致。TCP/IP协议的层次结构比较简单,共分为四层,如图所示。图1-1 TCP/IP网络模型上图中,TCP/IP协议中的四层分

      2、别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能,接下来针对这四层进行详细地讲解。链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。1.1 IP地址和端口号要想使网络中的计算机能够进行通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接受数据的计算机或者发送数据的计算机。在TCP/IP协议中,这个标识号就是IP地址,它可以唯一标识一台计算机,目前,IP地址广泛使用的版本是IPv4,它是由4个字节大小的二进制数来表示,如:00001010000000000000000000000001。由于二进制形式表示的IP地址非常不便记忆和处理,因此通常会将IP地址写成十进制的形式,每个字节用一个十进制数字(0-255)表示,数字间用符号“.”分开,如 “192

      3、.168.1.100”。随着计算机网络规模的不断扩大,对IP地址的需求也越来越多,IPV4这种用4个字节表示的IP地址面临枯竭,因此IPv6 便应运而生了,IPv6使用16个字节表示IP地址,它所拥有的地址容量约是IPv4的81028倍,达到2128个(算上全零的),这样就解决了网络地址资源数量不够的问题。通过IP地址可以连接到指定计算机,但如果想访问目标计算机中的某个应用程序,还需要指定端口号。在计算机中,不同的应用程序是通过端口号区分的。端口号是用两个字节(16位的二进制数)表示的,它的取值范围是065535,其中,01023之间的端口号用于一些知名的网络服务和应用,用户的普通应用程序需要使用1024以上的端口号,从而避免端口号被另外一个应用或服务所占用。接下来通过一个图例来描述IP地址和端口号的作用,如下图所示。从上图中可以清楚地看到,位于网络中一台计算机可以通过IP地址去访问另一台计算机,并通过端口号访问目标计算机中的某个应用程序。1.2 InetAddress了解了IP地址的作用,我们看学习下JDK中提供了一个InetAdderss类,该类用于封装一个IP地址,并提供了一系列

      4、与IP地址相关的方法,下表中列出了InetAddress类的一些常用方法。上图中,列举了InetAddress的四个常用方法。其中,前两个方法用于获得该类的实例对象,第一个方法用于获得表示指定主机的InetAddress对象,第二个方法用于获得表示本地的InetAddress对象。通过InetAddress对象便可获取指定主机名,IP地址等,接下来通过一个案例来演示InetAddress的常用方法,如下所示。public class Example01 public static void main(String args) throws Exception InetAddress local = InetAddress.getLocalHost();InetAddress remote = InetAddress.getByName();System.out.println(本机的IP地址: + local.getHostAddress();System.out.println(itcast的IP地址: + remote.getHostAddress();System.out.pri

      5、ntln(itcast的主机名为: + remote.getHostName();第2章 UDP与TCP协议在介绍TCP/IP结构时,提到传输层的两个重要的高级协议,分别是UDP和TCP,其中UDP是User Datagram Protocol的简称,称为用户数据报协议,TCP是Transmission Control Protocol的简称,称为传输控制协议。2.1 UDP协议UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。UDP的交换过程如下图所示。2.2 TCP协议TCP协议是面向连接的通信协议,即在传输数

      6、据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待服务器确认,第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求,第三次握手,客户端再次向服务器端发送确认信息,确认连接。整个交互过程如下图所示。由于TCP协议的面向连接特性,它可以保证传输数据的安全性,所以是一个被广泛采用的协议,例如在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开,因此,下载文件时必须采用TCP协议。第3章 UDP通信3.1 DatagramPacket前面介绍了UDP是一种面向无连接的协议,因此,在通信时发送端和接收端不用建立连接。UDP通信的过程就像是货运公司在两个码头间发送货物一样。在码头发送和接收货物时都需要使用集装箱来装载货物,UDP通信也是一样,发送和接收的数据也需要使用“集装箱”进行打包,为此JDK中提供了一个DatagramPacket类,该类的实例对象就相当于一个集装箱

      7、,用于封装UDP通信中发送或者接收的数据。想要创建一个DatagramPacket对象,首先需要了解一下它的构造方法。在创建发送端和接收端的DatagramPacket对象时,使用的构造方法有所不同,接收端的构造方法只需要接收一个字节数组来存放接收到的数据,而发送端的构造方法不但要接收存放了发送数据的字节数组,还需要指定发送端IP地址和端口号。接下来根据API文档的内容,对DatagramPacket的构造方法进行逐一详细地讲解。使用该构造方法在创建DatagramPacket对象时,指定了封装数据的字节数组和数据的大小,没有指定IP地址和端口号。很明显,这样的对象只能用于接收端,不能用于发送端。因为发送端一定要明确指出数据的目的地(ip地址和端口号),而接收端不需要明确知道数据的来源,只需要接收到数据即可。使用该构造方法在创建DatagramPacket对象时,不仅指定了封装数据的字节数组和数据的大小,还指定了数据包的目标IP地址(addr)和端口号(port)。该对象通常用于发送端,因为在发送数据时必须指定接收端的IP地址和端口号,就好像发送货物的集装箱上面必须标明接收人的地址一样

      8、。上面我们讲解了DatagramPacket的构造方法,接下来对DatagramPacket类中的常用方法进行详细地讲解,如下表所示。3.2 DatagramSocketDatagramPacket数据包的作用就如同是“集装箱”,可以将发送端或者接收端的数据封装起来。然而运输货物只有“集装箱”是不够的,还需要有码头。在程序中需要实现通信只有DatagramPacket数据包也同样不行,为此JDK中提供的一个DatagramSocket类。DatagramSocket类的作用就类似于码头,使用这个类的实例对象就可以发送和接收DatagramPacket数据包,发送数据的过程如下图所示。在创建发送端和接收端的DatagramSocket对象时,使用的构造方法也有所不同,下面对DatagramSocket类中常用的构造方法进行讲解。该构造方法用于创建发送端的DatagramSocket对象,在创建DatagramSocket对象时,并没有指定端口号,此时,系统会分配一个没有被其它网络程序所使用的端口号。该构造方法既可用于创建接收端的DatagramSocket对象,又可以创建发送端的Data

      9、gramSocket对象,在创建接收端的DatagramSocket对象时,必须要指定一个端口号,这样就可以监听指定的端口。上面我们讲解了DatagramSocket的构造方法,接下来对DatagramSocket类中的常用方法进行详细地讲解。3.3 UDP网络程序讲解了DatagramPacket和DatagramSocket的作用,接下来通过一个案例来学习一下它们在程序中的具体用法。下图为UDP发送端与接收端交互图解要实现UDP通信需要创建一个发送端程序和一个接收端程序,很明显,在通信时只有接收端程序先运行,才能避免因发送端发送的数据无法接收,而造成数据丢失。因此,首先需要来完成接收端程序的编写。l UDP完成数据的发送/* 发送端 * 1,创建DatagramSocket对象 * 2,创建DatagramPacket对象,并封装数据 * 3,发送数据 * 4,释放流资源 */public class UDPSend public static void main(String args) throws IOException /1,创建DatagramSocket对象DatagramSocket sendSocket = new DatagramSocket();/2,创建DatagramPacket对象,并封装数据/public DatagramPacket(byte buf, int length, InetAddress address, int port)/构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。byte buffer = hello,UDP.getBytes();DatagramPacket dp =

      《网络编程(Socket套接字编程)_讲义》由会员1818****572分享,可在线阅读,更多相关《网络编程(Socket套接字编程)_讲义》请在金锄头文库上搜索。

      点击阅读更多内容
    TA的资源
  • 武汉专版七年级英语下册Unit1Canyouplaytheguitar第四课时作业课件新版人教新目标

    武汉专版七年级英语下册Unit1Canyouplaytheguitar第四课时作业课件新版人教新目标

  • 山西专版七年级英语下册Unit5Whydoyoulikepandas第三课时作业课件新版人教新目标

    山西专版七年级英语下册Unit5Whydoyoulikepandas第三课时作业课件新版人教新目标

  • 武汉专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标

    武汉专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标

  • 武汉专版七年级英语下册Unit5Whydoyoulikepandas第四课时作业课件新版人教新目标

    武汉专版七年级英语下册Unit5Whydoyoulikepandas第四课时作业课件新版人教新目标

  • 武汉专版七年级英语下册Unit5Whydoyoulikepandas第一课时作业课件新版人教新目标

    武汉专版七年级英语下册Unit5Whydoyoulikepandas第一课时作业课件新版人教新目标

  • 山西专版七年级英语下册Unit5Whydoyoulikepandas单元写作专项作业课件新版人教新目标

    山西专版七年级英语下册Unit5Whydoyoulikepandas单元写作专项作业课件新版人教新目标

  • 山西专版七年级英语下册Unit1Canyouplaytheguitar特色题型组合练作业课件新版人教新目标

    山西专版七年级英语下册Unit1Canyouplaytheguitar特色题型组合练作业课件新版人教新目标

  • 九年级历史上册第一单元古代亚非文明第3课古代尤作业课件新人教

    九年级历史上册第一单元古代亚非文明第3课古代尤作业课件新人教

  • 九年级历史上册第五单元走向近代第13课西欧经济和社会的发展作业课件新人教

    九年级历史上册第五单元走向近代第13课西欧经济和社会的发展作业课件新人教

  • 山西专版七年级英语下册Unit12Whatdidyoudolastweekend单元语法专项作业课件新版人教新目标

    山西专版七年级英语下册Unit12Whatdidyoudolastweekend单元语法专项作业课件新版人教新目标

  • 山西专版七年级英语下册Unit1Canyouplaytheguitar单元写作专项作业课件新版人教新目标

    山西专版七年级英语下册Unit1Canyouplaytheguitar单元写作专项作业课件新版人教新目标

  • 九年级历史下册第四单元经济大危机和第二次世界大战第14课法西斯国家的侵略扩张作业课件新人教版202105181

    九年级历史下册第四单元经济大危机和第二次世界大战第14课法西斯国家的侵略扩张作业课件新人教版202105181

  • 九年级历史上册第四单元封建时代的亚洲国家第11课古代日本作业课件新人教

    九年级历史上册第四单元封建时代的亚洲国家第11课古代日本作业课件新人教

  • 八年级英语下册Module1FeelingsandimpressionsUnit2IfeelnervouswhenIspeakChinese小册子作业课件新版外研版

    八年级英语下册Module1FeelingsandimpressionsUnit2IfeelnervouswhenIspeakChinese小册子作业课件新版外研版

  • 八年级英语下册Module9FriendshipUnit1CouldIaskifyou'vementionedthistoher小册子作业课件新版外研

    八年级英语下册Module9FriendshipUnit1CouldIaskifyou'vementionedthistoher小册子作业课件新版外研

  • 九年级化学上册第1章开启化学之门第3节怎样学习和研究化学第1课时课件沪

    九年级化学上册第1章开启化学之门第3节怎样学习和研究化学第1课时课件沪

  • 山西专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标

    山西专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标

  • 九年级历史下册第三单元第一次世界大战和战后初期的世界第11课苏联的社会主义建设教学课件新人教

    九年级历史下册第三单元第一次世界大战和战后初期的世界第11课苏联的社会主义建设教学课件新人教

  • 九年级历史上册第五单元走向近代第16课早期殖民掠夺作业课件新人教

    九年级历史上册第五单元走向近代第16课早期殖民掠夺作业课件新人教

  • 2021春七年级历史下册第二单元辽宋夏金元时期民族关系发展和社会变化第12课宋元时期的都市和文化习题课件新人教版

    2021春七年级历史下册第二单元辽宋夏金元时期民族关系发展和社会变化第12课宋元时期的都市和文化习题课件新人教版

  • 点击查看更多
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.