




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二讲网络编程 网络应用是Java语言取得成功的领域之一 它已经成为现在Internet上最流行的一种编程语言 Java语言在网络编程方面提供了许多方便 其他语言往往需要数页代码才能完成的事情 在Java中可能只需要一条语句就可以 TCP IP 传输控制协议 网间协议 是Internet的主要协议 定义了计算机和外设进行通信所使用的规则 TCP IP网络参考模型包括五个层次 应用层 传输层 网络层 链路层 物理层 物理层 TCP IP 网络参考模型 基本知识1 计算机网络就是利用通信线路连接起来的 相互独立的计算机集合 2 计算机协议就是针对计算机之间的信息交互方式 秩序以及参数所作出的规定 常用协议 TCP IP UDP SNMP SMTP FTP HTTP file 3 网络功能作为一门成功的网络编程语言 Java为用户提供了十分完善的网络功能 获取网络上的各种资源与服务器建立连接和通信传递本地数据4 通信模式Java是通过使用流模式来实现网络信息交互的 这种模式下 一个接口同时拥有两个流 输入流和输出流 当一个线程向另一个线程发送数据时 只需将数据写入到相应接口的输出流上 而另一个进程在接口的 另一端 从输入流上读取数据 5 J包J包提供了低级和高级的网络功能 它包含了大部分用于访问网络资源的类 包中主要的类和可能产生的例外包括 面向IP层的类 InetAddress面向应用层的类 URL URLConnection面向传输层的类 TCP协议相关类 Socket ServerSocketUDP协议相关类 DatagramPacket DatagramSocket MulticastSocket 可能产生的例外 BindException ConnectException MalformedURLException NoRouteToHostException ProtocolException SocketException UnknownHostException UnknownServiceException 网络功能与使用方法网络功能按层次与使用方法分为三类 1 URL这种方法是通过URL的网络资源表达式形式确定数据在网络中的位置 利用URL对象中提供的方法 直接读入网络中的数据 或者将本地数据传送到网络的另一端 2 Socket 套接字IP 端口 重点内容 Socket是指两个程序通过网络进行通信的一种方式 在TCP IP协议下的客户服务器软件通常使用socket来进行信息交流 这种方式是传统中常用的一种方式 面向连接 这种工作方式类似两个人打电话 3 DataGram 数据报 Datagram方式是三种网络功能中最低级的一种 它是一种面向非连接的 以数据报方式工作的通信 适用于网络状况不稳定下的数据传输和访问 这种工作方式类似邮局寄邮件 Socket是TCP IP协议中的传输层接口 是建立在稳定连接基础上的以流传输数据的通信方式 它是目前实现客户 服务器 Client Server 模式应用程序的主要手段 底层网络通信编程 Socket 对等通信示例 一台机器只通过一条链路连接到网络上 但一台机器中往往有很多应用程序需要进行网络通信 如何区分呢 这就要靠网络端口号 port 0 65535 端口号是一个标记机器的逻辑通信信道的正整数 端口号不是物理实体 IP地址和端口号组成了所谓的Socket Socket是网络上运行的程序之间双向通信链路的最后终结点 它是TCP和UDP的基础 网络服务 http ftp 其他服务 23 telnet 数据结构I O缓冲区 端口 21 80 客户程序 Socket IP port IP与端口号组合而得出的Socket 可以完全分辨Internet上运行的程序 端口号 要求大于1023 0 1023为系统服务占用 基于连接的流式套接字socket通信 socket Ip 端口号 1 InetAddress类InetAddress类用来区分计算机网络中的不同节点 即不同计算机 并对其寻址 每个InetAddress对象包含了IP地址 主机名等信息 常用方法 getLocalHost 返回本地主机的名称和IP地址getByName 返回网站主机的名称和IP地址getAllByName 返回网站主机名称和IP地址的数组 2 ServerSocket类和Socket类 ServerSocket类 在Server端创建一个监听服务格式 ServerSocketmyServer newServerSocket 5000 调用监听服务的accept 方法在Server端创建一个Socket对象随时监听可能的Client端请求SocketlinkSocket myServer accept 在Server与Client之间建立一个连接来传递数据OutputStreamSocketOs linkSocket getOutputStream 用于写数据InputStreamSocketIs linkSocket getInputStream 用于读数据调用监听服务的close 方法结束监听服务myServer close Socket类 当Client端程序需要从Server端获取信息及其它服务时 应该创建一个Socket对象 格式 SocketmyClient newSocket Server主机名 端口号 在Server与Client之间建立一个连接来传递数据OutputStreamSocketOs myClient getOutputStream 用于写数据InputStreamSocketIs myClient getInputStream 用于读数据通信结束时 可以调用Socket类的close 方法来关闭拆除连接 myClient close 3 流式Socket的通信机制 Server端 创建ServerSocket对象在某端口提供监听服务 等待来自Client端的服务请求 接收Client端的请求 用返回的Socket建立连接 通过向Socket中读写数据来与Client端通信 关闭Socket 结束与当前Client的通信 等待其它请求 关闭ServerSocket对象 结束监听服务 Client端 创建Socket对象 向Server的监听端口请求 通过向Socket中读写数据来与Server端通信 关闭Socket 结束与Server端的通信 建立连接 数据通信 拆分连接 4 编程实例 聊天程序 服务器端程序 客户机端程序 importjava io importjava awt importjavax swing importjava awt event publicclasschatServerextendsJFrameimplementsActionListener JLabellabel newJLabel 聊天 JPanelpanel newJPanel JTextFieldtf newJTextField 10 用来输入要说的话JTextAreata newJTextArea 用来显示聊天过程 服务器端 基于Socket的聊天程序 ServerSocketserver Socketclient InputStreamin OutputStreamout publicchatServer 构造方法 super 服务器 setSize 250 250 panel add label panel add tf tf addActionListener this add North panel add Center ta setDefaultCloseOperation JFrame EXIT ON CLOSE setVisible true try server newServerSocket 5000 client server accept ta append 已连接的客户机 client getInetAddress getHostName n n in client getInputStream out client getOutputStream catch IOExceptionioe while true 接受客户端说的话 try byte buf newbyte 256 in read buf Stringstr newString buf ta append 客户机说 str ta append n catch IOExceptionioe publicvoidactionPerformed ActionEvente try Stringstr tf getText byte buf str getBytes tf setText null out write buf 发送服务器说的话ta append 我说 str ta append n catch IOExceptionioe publicstaticvoidmain Stringargs newchatServer importjava io importjava awt importjavax swing importjava awt event publicclasschatClientextendsJFrameimplementsActionListener JLabellabel newJLabel 聊天 JPanelpanel newJPanel JTextFieldtf newJTextField 10 JTextAreata newJTextArea Socketclient InputStreamin OutputStreamout 客户端 基于Socket的聊天程序 publicchatClient 构造方法 super 客户机 setSize 250 250 panel add label panel add tf tf addActionListener this add North panel add Center ta setDefaultCloseOperation JFrame EXIT ON CLOSE show try client newSocket InetAddress getLocalHost 5000 ta append 已连接到服务器 client getInetAddress getHostName n n in client getInputStream out client getOutputStream catch IOExceptionioe while true 接受服务器端说的话 try byte buf newbyte 256 in read buf Stringstr newString buf ta append 服务器说 str ta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智算中心数据整合与协同管理方案
- 资源禀赋与共同富裕的耦合协调发展评价及影响因素研究
- 考点攻克苏科版八年级物理下册《力》达标测试试卷(解析版含答案)
- 交通勘察与交通流量分析
- 共享审计视角下崇达技术企业并购绩效研究
- 重难点解析人教版八年级上册物理声现象《声音的特性声的利用》专项练习试题(解析卷)
- 诸“晋书”修撰研究
- 考点攻克人教版八年级上册物理机械运动《运动的描述》专题攻克练习题(详解)
- 解析卷人教版八年级上册物理物态变化《熔化和凝固》综合训练试题(详解版)
- 基于挤出加工整体再生的沥青胶砂疲劳性能研究
- 《通信原理》第六版课件(全)
- 汽车以租代购客户答疑常用话术(一)
- (完整版)黄帝内经繁体版
- 儿科学-见习课液体疗法
- 高考语文 最是风流袁隆平 课件(59张PPT)
- 河道告示牌设计样图、点、线、面编码及属性统计表、界桩(牌)身份证表、移位桩点之记表样式、数据库结构表
- 2019年全国卷2(物理)含答案
- 房建工程施工工艺标准化手册(图文并茂)
- DB4101-T 25.2-2021物业服务规范 第2部分:住宅-(高清现行)
- 一例给药错误不良事件汇报
- AS9103-关键特性的波动管理
评论
0/150
提交评论