5Java网络编程(上).ppt_第1页
5Java网络编程(上).ppt_第2页
5Java网络编程(上).ppt_第3页
5Java网络编程(上).ppt_第4页
5Java网络编程(上).ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

Java网络编程 ID SCSJ002 J2SE 2020 1 27 Java网络编程 Java网络编程 网络基础Internet的形成和发展网络通信协议网络通信结构TCP IPSocketJavaSocket编程利用多线程实现双向的Socket通信UDP与UDP数据广播 2020 1 27 Java网络编程 网络基础知识 网络 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模宏大 功能强大的网络系统 从而使众多的计算机可以方便地互相传递信息 共享硬件 软件 数据信息等资源 计算机的联网可以实现 使用远程资源共享信息 程序和数据分布处理 2020 1 27 Java网络编程 计算机网络分类 按照网络规模和范围可以简单划分为 局域网 LAN LocalAreaNetwork 都市网 MAN MetropolisAreaNetwork 广域网 WAN WideAreaNetwork 按照网络拓扑结构可以分为 星型网络 总线网络 环线网络 树型网络 星型环线网络等按照传输介质划分 双绞线 同轴电缆 光导纤维 视线介质等 2020 1 27 Java网络编程 网络的几种工作模式 专用服务器结构 Server Based 又称为 工作站 文件服务器 结构 由若干台微机工作站与一台或多台文件服务器通过通信线路连接起来组成工作站存取服务器文件 共享存储设备 客户机 服务器模式 client server 其中一台或几台较大的计算机集中进行共享数据库的管理和存取 称为服务器 而将其它的应用处理工作分散到网络中其它微机上去做 构成分布式的处理系统 对等式网络 Peer to Peer 在对等式网络结构中 没有专用服务器每一个工作站既可以起客户机作用也可以起服务器作用 2020 1 27 Java网络编程 Internet基础 Internet的形成和发展 第一阶段 1969 1983 1969年 美国ARPANET诞生 用于将几个军事及研究用的主机联系起来 1983年 TCP IP应用到ARPANET中 使得internet得以迅速发展 以ARPANET为中心 组成新的互联网 internet 称为Internet 第二阶段 1983 1994 用于教育和科研领域的NSFNET NationalScienceFoundationNet 形成第三阶段 1994 Now Internet的商业化运作 2020 1 27 Java网络编程 网络通信协议 接口 网络通信协议计算机网络中实现通信必须有一些约定即通信协议 对速率 传输代码 代码结构 传输控制步骤 出错控制等制定标准 网络通信结构为了使两个结点之间能进行对话 必须在它们之间建立通信工具 即接口 使彼此之间能进行信息交换 接口包括两部分 硬件装置 实现结点之间的信息传送软件装置 规定双方进行通信的约定协议 2020 1 27 Java网络编程 OSI的分层思想 OSI 开放系统互连 OpenSystemInterconnection 采用分层的结构化技术 分层的理由 将网络简化模块化的设计网络OSI参考模型 OSI RM OpenSystemInterconnection ReferenceModel 共分为7层 最高层为用户层 最底层为物理层 2020 1 27 Java网络编程 OSI的七层模型 2020 1 27 Java网络编程 TCP协议TransmissionControlProtocol TCP协议为一种可靠的端对端协议 重发一切没有收到的数据 进行数据内容准确性检查并保证分组的正确顺序 TCP协议位于OSI参考模型的传输层 TCP 2020 1 27 Java网络编程 IP协议 IP协议是网络上的计算机进行连接的基础IP协议是不可靠的 无论传送正确与否都不进行检验 不回送确认 不保证分组的正确顺序IP协议位于OSI参考模型的网络层 IP 2020 1 27 Java网络编程 TCP IP协议 TCP IP 是Internet上不同系统之间互联的一组协议 它为分散和不同类型的硬件提供了一个通用的编程接口 TCP IP协议使Internet尽可能成为一个分散 无序的网络 TCP IP通常被看成一个4层模型 应用层 传输层 网络层以及数据链路层 物理层 2020 1 27 Java网络编程 OSI和TCP IP的分层对应 OSI参考模型 TCP IP参考模型 2020 1 27 Java网络编程 数据的封装和拆封 位于TCP IP各个层的数据通常用一个公共的机制来封装 定义描述元信息和数据报的部分真实信息的报头的协议 这些元信息可以是数据源 目的地和其他的附加属性 来自于高层的协议封装在较低层的数据报中 当信息在不同的层之间传递时 都会在每一层重新构建一次 2020 1 27 Java网络编程 IP地址的分配 IP地址的定义为了实现Internet上不同计算机之间的通信 每台计算机都必须有一个不与其它计算机重复的地址 IP地址IP地址是数字型的 32位 32bit 由4个8位的二进制数组成 每8位之间用圆点隔开网络标识 networkid 和主机标识 hostid IP地址被分成了A B C D E五类 每个类别的网络标识和主机标识各有规则 2020 1 27 Java网络编程 网络IP地址的构成 1 Bits 0NNNNNNN Host Host Host 8 9 16 17 24 25 32 Range 1 126 1 10NNNNNN Network Host Host 8 9 16 17 24 25 32 Range 128 191 1 110NNNNN Network Network Host 8 9 16 17 24 25 32 Range 192 223 Bits Bits ClassA ClassB ClassC 1 1110NNNN Network Network Host 8 9 16 17 24 25 32 Range 224 239 Bits ClassD 2020 1 27 Java网络编程 常见TCP端口和对应服务 2020 1 27 Java网络编程 端口 port 计算机与外界交流的出入口是一种抽象的软件结构 包括一些数据结构和I O 基本输入 输出 缓冲区端口号可以从0到65535 通常将它分为三类 公认端口 WellKnownPorts 从0到1023 它们紧密绑定 Binding 一些服务注册端口 RegisteredPorts 从1024到49151 它们松散地绑定一些服务动态和 或私有端口 Dynamicand orPrivatePorts 从49152到65535 理论上 不应为服务分配这些端口 2020 1 27 Java网络编程 Java中的 ping 在命令行中 可以通过 ping host 的方法得到指定主机的IP地址通过中的InetAddress类 可以得到指定主机的IP地址如果没有指定机器 则将会返回本地主机的IP地址InetAddressia InetAddress getLocalHost InetAddressia InetAddress getByName YourComputerName 2020 1 27 Java网络编程 Socket 套接字 Socket 表示一个系统的IP地址和端口号的结合 TCP IP连接的一个端点用来处理两个流对象创建TCPSocket需要的四个信息 本地系统的IP本地应用程序使用的TCP端口号远程系统的IP远程应用程序相应的TCP端口号 2020 1 27 Java网络编程 JavaSocket编程 ServerSocket Socket两个类用于建立一个双边的通信 ServerSocket等待来自客户端的连接 而Socket连接到一个服务器端 2020 1 27 Java网络编程 ServerSocket类 ServerSocket类用于侦听一个客户端的Socket连接 如果没有连接 它将一直等待 ServerSocket构造器 ServerSocket intport 用指定的端口port来创建一个侦听SocketServerSocket intport intbacklog InetAddresslocalAddr 在机器存在多个IP地址的情况下 允许通过localAddr这个参数来指定侦听的IP地址 ServerSocket方法 Socketaccept close 2020 1 27 Java网络编程 Socket类 Socket类构造器Socket Socket InetAddressaddress intport Socket Stringhost intport protectedSocket SocketImplimpl Socket Stringhost intport InetAddresslocalAddr intlocalPort Socket方法 getInputStream getOutputStream close 2020 1 27 Java网络编程 Socket简单通信例子 ServerSocketserver newServerSocket 1234 Socketsk server accept BufferedReaderbr newBufferedReader newInputStreamReader sk getInputStream System out println br readLine br close server close 2020 1 27 Java网络编程 Socket通信例子 Socketclient null PrintStreamps null try client newSocket localhost 1234 System out println 连接成功 ps newPrintStream client getOutputStream ps println Hello client close catch IOExceptione System out println e 2020 1 27 Java网络编程 Socket持续通信例子 ServerSocketserver newServerSocket 1234 Socketsk server accept BufferedReaderbr newBufferedReader newInputStreamReader sk getInputStream Stringline null while line br readLine null if quit equalsIgnoreCase line break System out println OK br close server close 2020 1 27 Java网络编程 Socket通信例子 try Socketclient newSocket localhost 1234 System out println 连接成功 PrintStreamps newPrintStream client getOutputStream true BufferedReaderbrKey newBufferedReader newInputStreamReader System in Stringline null while line brKey readLine null ps println Hello client close catch IOExceptione System out println e 2020 1 27 Java网络编程 多线程实现双向的Socket通信 1 publicclassServer publicstaticvoidmain String args ServerSocketss newServerSocket 8888 while true Socketsocket ss accept 阻塞SessionThreadst newSessionThread socket st start ss close 2020 1 27 Java网络编程 多线程实现双向的Socket通信 2 publicclassSessionThreadextendsThread Socketsocket publicSessionThread Socketsocket this socket socket publicvoidrun InputStreamin socket getInputStream OutputStreamout socket getOutputStream PrintWriterpw newPrintWriter out true pw println 欢迎光临 BufferedReaderbr newBufferedReader newInputStreamReader in Stringline null while line br readLine null if quit equalsIgnoreCase line break System out println line in close br close pw close socket close 2020 1 27 Java网络编程 课堂练习 从客户端输入Createuser指令 系统提示输入用户名和密码 保存到文件中 从客户端输入deleteuser指令 系统提示输入用户名 然后从文件中将输入的用户删除 从客户端输入updateuser指令 系统提示输入用户名和密码 然后将文件里的用户的密码修改为新输入的密码 从客户端输入listuser指令后 马上把文件里所有的用户打印到客户端 密码不打印 2020 1 27 Java网络编程 CRUD基本原理 2020 1 27 Java网络编程 CRUD最佳实践 publicclassPropertiesFactory staticPropertiesproperties publicstaticPropertiesgetProperties if properties null properties newProperties InputStreamin newFileInputStream d user properties properties load in in close returnproperties 2020 1 27 Java网络编程 课堂练习 连接到HTTP服务器 获取指定的页面数据 2020 1 27 Java网络编程 UDP UserDatagramProtocol 与TCP协议之间的不同在于UDP不是一种基于稳定连接的通讯协议 UDP协议将独立的数据包从一台计算机传输到另外一台计算机 但是并不保证接受方能够接收到该数据包 也不保证接收方所接收到的数据和发送方所发送的数据在内容和顺序上是完全一致的 因此 UDP协议更类似于普通邮政服务 寄信人不能够保证所寄出去的信能够被收信人及时收到 后发出的信也许会比先发出的信更早到达 2020 1 27 Java网络编程 DatagramSocket 首先构造一个数据报 然后把它发送出去 同时我们也可以接收数据报 在java中提供了DatagramPacket和DatagramSocket两个类来完成这样的任务 前者负责构造数据报后者负责发送和接收 2020 1 27 Java网络编程 DatagramPacket的构造器 DatagramPacket byte buf intlength InetAddressaddress intport DatagramPacket byte buf intoffset intlength InetAddressaddress intport DatagramPacket byte buf intoffset intlength SocketAddressaddress DatagramPacket byte buf intlength SocketAddressaddress DatagramPacket byte buf intlength DatagramPacket byte buf intoffset intlength 2020 1 27 Java网络编程 DatagramSocket的构造器 DatagramSocket Constructsadatagramsocketandbindsittoanyavailableportonthelocalhostmachine protectedDatagramSocket DatagramSocketImplimpl CreatesanunbounddatagramsocketwiththespecifiedDatagramSocketImpl DatagramSocket intport Constructsadatagramsocketandbindsittothespecifiedportonthelocalhostmachine DatagramSocket intport InetAddressladdr Createsadatagramsocket boundtothespecifiedlocaladdress DatagramSocket SocketAddressbindaddr Createsadatagramsocket boundtothespecifiedlocalsocketaddress 2020 1 27 Java网络编程 DatagramPacket的构造器 DatagramSocketsocket newDatagramSocket while true bytebuffer newbyte 256 buffer newDate toString getBytes InetAddressaddress InetAddress getByName RemoteComputerNameOrIP DatagramPacketpacket newDatagramPacket buffer buffer length address 8989 socket send packet Thread sleep 500 2020 1 27 Java网络编程 DatagramPacket的构造器 DatagramSocketsocket newDatagramSocket 8989 while true bytebuffer newbyte 256 DatagramPacketpacket newDatagramPacket buffer buffer length socket receive packet System out write packet getData 0 packet getData length System out println Thread sleep 500 2020 1 27 Java网络编程 UDP数据广播 在通用的以太网 Ethernet 构架下 计算机于计算机之间的数据交换都是通过交换机来完成的 如果一份数据需要被传送给多个接收者 在使用TCP IP连接的情况下 数据发送者需要向交换机发送N个同样的拷贝 而交换机则负责将这N个拷贝分发给所有的接收者 在使用UDP数据广播的情况下 数据发送者只需要向交换机发送一个拷贝 交换机负责将这个信息制作N个拷贝发送给所有的机器 在这种情况下 使用TCP IP连接会大大的增加网络的负担 在一个普通局域网络中 可以认为由于网络状况较差而造成数据丢失的可能性比较小 而利用UDP数据广播进行数据交换能够大幅度减轻网络的负担 2020 1 27 Java网络编程 MulticastSocket receive MulticastSockets newMulticastSocket 6789 InetAddressgroup InetAddress getByName 228 5 6 7 s joinGroup group while true bytebuffer newbyte 256 DatagramPacketpacket ne

温馨提示

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

最新文档

评论

0/150

提交评论