Java网络编程.ppt

上传人:asd****56 文档编号:87452247 上传时间:2023-04-16 格式:PPT 页数:44 大小:400KB
返回 下载 相关 举报
Java网络编程.ppt_第1页
第1页 / 共44页
Java网络编程.ppt_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《Java网络编程.ppt》由会员分享,可在线阅读,更多相关《Java网络编程.ppt(44页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Version 3.0你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院Java语言与JBuilder应用初步第十五章 网络编程初步 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院回顾回顾JBuilder创建工程创建工程 如何使用如何使用JBuilder制作压缩包制作压缩包如何使用如何使用JBuilder发布程序发布程序Java的的I/O流库流库 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院 本章要点网络协议入门基于Socket的网络编程服务器-客户端程序 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院网络协

2、议入门网络协议入门网络编程初步网络编程初步近年来,因特网得到了广泛的发展和应用Java语言的产生与推广,也与网络息息相关利用Java语言强大的功能,将使得网络编程变得十分简单网络传输协议网络传输协议接入网络的计算机都遵循同样的协议,这就是TCP/IP协议TCP/IP协议将网络分成多层 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院网络协议入门网络协议入门网络传输的层次结构网络传输的层次结构常用的网络层次有4层,分别是连接层、网络层、传输层和应用层我们编写的网络程序通常处在应用层,在这一层,不需要追究有关网络或网卡的技术细节,就可以编写出很好的程序 你的潜力,我们的动力!你

3、的潜力,我们的动力!襄樊软件学院襄樊软件学院C/S 模式模式在在 C/S 模式下,用传输协议进彼此通信的进程包括模式下,用传输协议进彼此通信的进程包括客户进程客户进程(C)和服务器进程和服务器进程(S)向网上服务提供者主动提出服务请求,并得到服务的向网上服务提供者主动提出服务请求,并得到服务的进程称作客户进程进程称作客户进程(Client)随时等待服务请求,并及时响应,提供网上资源的进随时等待服务请求,并及时响应,提供网上资源的进程称作服务器进程程称作服务器进程(Server)服务器进程通常是并发、多线程的,可同时分别处理服务器进程通常是并发、多线程的,可同时分别处理多个不同客户进程的服务请求

4、多个不同客户进程的服务请求为区别与标识同在一台计算机上运行的多个服务器进为区别与标识同在一台计算机上运行的多个服务器进程及客户进程,要分别标识每个进程程及客户进程,要分别标识每个进程 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院TCP协议协议TCP是是Transmission Control Protocol的缩写,译为的缩写,译为传输控制协议传输控制协议面向连接、端对端面向连接、端对端(进程对进程进程对进程)、全双工、全双工且能连续传送字节流的报文和高可靠性是且能连续传送字节流的报文和高可靠性是TCP的的主要特色主要特色功能功能涉及到可靠性涉及到可靠性从出错从出错(检

5、验错、检验错、丢失、重复或无序接收丢失、重复或无序接收)恢复到有序递交;恢复到有序递交;以及相关的流量控制、多路复用、连接控以及相关的流量控制、多路复用、连接控制、拥塞避免、优先级与安全等诸多方面制、拥塞避免、优先级与安全等诸多方面 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院套接字与套接字与 TCP 连接连接套接字套接字(socket)是包括了主机的是包括了主机的IP地址和地址和该进程的该进程的通信端口通信端口的一种的一种标识标识,这两个成,这两个成分使套接字能唯一地标识出网上某处的分使套接字能唯一地标识出网上某处的特特定通信进程定通信进程一对套接字一对套接字指明了通

6、信的一对应用进程,指明了通信的一对应用进程,也就确定了一个也就确定了一个 TCP 连接连接 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院TCP报文格式报文格式 16位源端口位源端口16位目的端口位目的端口32位序号位序号32位确认序号位确认序号4位首位首部长部长6位位保留保留6位标志位标志16位窗口大小位窗口大小16位校验和位校验和16位紧急指针位紧急指针选项选项数据数据 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院IP报文格式报文格式 版本版本 头长头长服务类型服务类型报文总长报文总长标识标识MFDF13位片偏移位片偏移TTL协议协议头校验和头

7、校验和源源IP地址地址目的目的IP地址地址数据数据 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院DP报文格式报文格式UDP端口与端口与TCP端口相互独立端口相互独立16位源端口号位源端口号16位目的端口号位目的端口号16位位UDP长度长度16位位UDP校验和校验和数据数据 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院计算机端口计算机端口计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。软件

8、领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。也称为逻辑意义上的端口,一般是指TCP/IP等协议中的端口,端口号的范围从0到65535.你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院端口的分类端口的分类按端口号分布划分按端口号分布划分(1)系统端口系统端口/知名端口(知名端口(Well-Known Ports)知名端口即众所周知的端口号,范围从知名端口即众所周知的端口号,范围从0到到1023,这些,这些端口号一般固定分配给一些服务。端口号一般固定分配给一些服务。比如比如21端口分配给端口

9、分配给FTP服务,服务,25端口分配给端口分配给SMTP(简单邮件传输协议)服务,(简单邮件传输协议)服务,80端口分配给端口分配给HTTP服务,服务,135端口分配给端口分配给RPC(远程过程调用)(远程过程调用)服务等等。服务等等。(2)动态端口(动态端口(Dynamic Ports)动态端口的范围从动态端口的范围从1024到到65535,这些端口号一般不固,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端定分配给某个服务,也就是说许多服务都可以使用这些端口。口。只要运行的程序向系统提出访问网络的申请,那么系只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端

10、口号中分配一个供该程序使用。比如统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。闭程序进程后,就会释放所占用的端口号。你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院端口的分类端口的分类按协议类型划分按协议类型划分按协议类型划分,按协议类型划分,可以分为可以分为TCP、UDP、IP和和ICMP(Internet控制消息协议)等端口控制消息协议)等端口。下面主要介绍。下面主要介绍TCP和和UDP端口:端口:(1)TCP端口端口TCP端口,即

11、传输控制协议端口,需要在客户端和服端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。务器之间建立连接,这样可以提供可靠的数据传输。常见常见的包括的包括FTP服务的服务的21端口,端口,Telnet服务的服务的23端口,端口,SMTP服务服务的的25端口,以及端口,以及HTTP服务的服务的80端口等等。端口等等。(2)UDP端口端口UDP端口,即用户数据报协议端口,无需在客户端和端口,即用户数据报协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。服务器之间建立连接,安全性得不到保障。常见的有常见的有DNS服务的服务的53端口,端口,SNMP(简单

12、网络管理协议)服务的(简单网络管理协议)服务的161端端口,口,QQ使用的使用的8000和和4000端口等等。端口等等。你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程下面的例子演示一个简单的服务器与客户的下面的例子演示一个简单的服务器与客户的交互交互,即服务器等待即服务器等待,客户访问客户访问,相互通一次信相互通一次信息息.你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院8.5 Socket.8.5 Socket创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建

13、立socket流流读客户读客户 端信息端信息向用户发出一个字符串向用户发出一个字符串创建创建Socket实例实例定义数据成员定义数据成员建立建立socket流流读读socket流流(接收并显示接收并显示)送用户名给送用户名给服务器服务器关闭流关闭流waiting for user127.0.0.1 11111111login:connetcting client.java提示用户登录成功提示用户登录成功读读socket流流User:javaLogin successful 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程Socket类

14、的网络编程特点类的网络编程特点Socket类处于应用层,无需考虑技术细节利用Socket类进行网络通讯的基本步骤:创建服务器端,等待连接创建客户端,向服务器端发送请求在客户端和服务器端建立双向连接通道服务器和客户端都可以通过这条通道向对方发送消息,二者的地位是相等的 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程Socket类的网络编程特点类的网络编程特点在网络程序中,存在很多等待过程服务器端等待客户端的连接连接上的两端相互等待对方发送数据程序在等待时不能响应用户的动作,使得单线程网络程序往往处于类似死机的状态因此,网络程序一般都是

15、多线程程序后台线程等待网络消息前台线程处理用户动作 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程Socket类的编程步骤类的编程步骤建立服务器端:建立服务器端对象,给出端口号,服务器端在这个端口等待客户端的连接调用accept函数监听端口,程序会停止在这里,一直等待客户端的连接当客户端连接到该端口之后,accept函数将建立一个Socket类,用于与客户端的通讯 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程Socket类的编程步骤类的编程步骤ServerSocket类

16、会抛出IOException异常,必须用try.catch结构捕获该异常建立服务器端的代码示例:try serverSocket=new ServerSocket(4444);Socket connSocket=serverSocket.accept();catch(IOException e)System.out.println(无法监听端口4444.);System.exit(-1);你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程Socket类的编程步骤类的编程步骤建立客户端的步骤:创建一个Socket对象,对象构造函数的两个参

17、数分别为服务器端的主机名以及端口号程序将不断连接远程计算机,直到连接成功之后,才继续执行下面的代码try clientSocket=new Socket(serverhost,4444);catch(IOException e)System.out.println(无法与服务器建立连接。);System.exit(-1);你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程Socket类的编程步骤类的编程步骤建立连接之后,服务器端和客户端即可对等地利用I/O流发送或者接收信息发送消息的步骤:获得Socket类的输出流建立一个PrintWr

18、iter对象,利用它向网络输出利用println函数发送消息PrintWriter out=new PrintWriter(connSocket.getOutputStream(),true);out.println(发送消息);你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程Socket类的编程步骤类的编程步骤接收消息的步骤:获得Socket对象的输入流新建一个读数据流的对象,以读取输入流将接收到的消息保存在缓存中调用缓存对象的readLine函数读入一行数据BufferedReader in=new BufferedReader(

19、new InputStreamReader(connSocket.getInputStream();String inStr=in.readLine();你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院基于基于Socket的网络编程的网络编程Socket类的编程步骤类的编程步骤BufferedReader对象是一个标准的读入、缓存数据对象。此对象缺省的缓冲区很大,足以放下收到的所有数据由于不知道通过网络会收到多少数据,因此先将接收到的数据暂存起来,然后再读取执行readLine函数时,会一直等到接收完一行数据之后才会继续执行下去 你的潜力,我们的动力!你的潜力,我们的动力!

20、襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序综合性程序综合性程序本节我们编写较大、有一定实用性的程序通过这个程序,两个人可以在网上聊天程序的基本特征:图形界面聊天记录显示聊天记录保存这仍然是一个较为简单的程序,目的是演示网络编程的功能 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序程序结构程序结构多线程的程序结构初始化、运行、退出用户图形界面服务器/客户端的连接网络数据的传输与显示数据保存功能 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序多线程的程序结构多线程的程序结

21、构网络连接、网络通讯时不可避免地存在等待和延迟的情况,因此采用多线程程序结构程序中有三个线程:前台线程响应图形界面的用户动作,发送网络数据,保存对话内容服务器线程等待网络连接,接收网络数据客户端线程连接对方主机,接收网络数据一般情况下,程序中同时有两个线程运行 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序初始化初始化主框架类ChatDemo兼做主程序类,程序由这个类的静态函数main开始运行创建一个ChatDemo对象,设置主框架的标题、界面风格等在主框架显示之前,首先弹出输入框,要求输入昵称,如果用户没有输入昵称,则程序自动退出为退出

22、程序的事件设置处理类,这是一个简单的匿名类,调用confirmClose函数 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序初始化初始化在主界面中添加、显示组件显示主界面设置标志变量创建一个服务器线程,并运行它退出退出程序退出时,一个匿名事件类会自动调用confirmClose函数,在其中处理退出过程 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序退出退出confirmClose函数:检查内存中的改动标志,如果聊天记录在上次保存之后有了改动,则提示用户保存如果用户选择保存,则打开“保

23、存文件”对话框如果保存成功,则程序直接退出如果保存失败,或用户取消保存,则返回主界面如果用户选择不保存记录,则直接退出如果没有聊天记录,或者聊天记录在上次保存后没有新的改动,则直接退出 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序用户图形界面用户图形界面程序的主图形界面如下图所示:你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序用户图形界面用户图形界面在addComponent函数中产生图形界面由5个面板组成主面板,相当于整个内容窗格的大小,放在内容窗格之上,以放置其它组件主面板的布

24、局管理器是纵向排列的盒式布局,上下顺序放置4个子面板 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序用户图形界面用户图形界面子面板1:放置两个文本标签,用于显示对方和自己的昵称子面板2:放置了一个文本框和一个按钮,用来发送文字子面板3:是一个滚动条面板,用来放置文本区域,显示聊天记录子面板4:放置三个按钮,分别用于连接,保存聊天记录和退出程序 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序服务器服务器/客户端的连接客户端的连接服务器端线程多线程可避免等待连接造成程序失去响应19019

25、8行代设置服务器端,等待连接为accept函数设置了等待时间,如果1秒内还没有主机与它连接的话,程序就会自动抛出一个SocketTimeoutException异常这个异常不做任何事,程序又自动返回accept函数继续等待连接 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序服务器服务器/客户端的连接客户端的连接这样设定的原因是响应客户端线程本程序是对等式连接,在等待别人连接时,也可以调用客户端线程主动连接其他人如果主动连上了其他人,则等待的服务器端应当停止,不再接受连接服务器端在等待时间结束时判断客户端是否已经连接成功,如果连接成功,则自

26、动退出服务器端线程 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序服务器服务器/客户端的连接客户端的连接客户端线程231243行代码是客户端的连接代码当用户点击“连接”按钮时,自动启动客户端程序,连接其他主机根据网络速度的不同,连接时间会有长短差别,因此客户端程序也放在单独的线程中 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序服务器服务器/客户端的连接客户端的连接无论服务器端还是客户端线程,当连接成功后,都自动转入等待数据接收的状态服务器端:创建BufferedReader对象,读

27、取对方姓名,发送自己的姓名,最后进入等待读取数据阶段客户端:创建BufferedReader对象,发送自己的姓名,读取对方姓名,最后进入等待读取数据阶段 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序网络数据的传输与显示网络数据的传输与显示数据发送功能:用户在文本框中输入文字,点击“发送”按钮,即可将文字发送给对方发送数据时调用sendMessage函数由于发送时间比较短,因此没有开单独的线程发送,就在前台线程中发送发送时会有短暂的失去响应现象,但用户一般感觉不到 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器

28、服务器-客户端程序客户端程序网络数据的传输与显示网络数据的传输与显示数据发送功能:首先判断程序是作为服务器端还是客户端,以确定通过哪个对象发送数据创建一个PrintWriter对象发送数据调用addText函数在文本区域中显示刚才发送的文字内容写完文字以后,除了点击“发送”按钮以外,直接按回车也会调用同样的函数发送 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序网络数据的传输与显示网络数据的传输与显示数据接收功能:服务器端和客户端的数据接收代码相同程序在单独的线程中等待接收数据BufferedReader从网络接收数据,保存到缓存之后,再

29、赋值给String对象inStr调用主框架的addText函数显示内容 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序网络数据的传输与显示网络数据的传输与显示addText函数:有两个参数参数1:昵称,可以是自己或对方的昵称参数2:对话文本根据昵称和文本的不同,可以显示自己的文字或对方的文字 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序网络数据的传输与显示网络数据的传输与显示addText函数:在文本区域的末尾添加一行,内容是:昵称:文本内容rn其中“rn”表示回车与换行设置内容修

30、改标志为1,以提示用户退出时保存将文本区域的内容滚动到最后,以显示刚才添加的内容 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序数据保存功能数据保存功能当用户点击“保存”按钮,或退出程序时,都会调用saveFile函数进行数据保存操作在saveFile函数中:创建一个文件选择对话框,设置其属性为保存文件框显示保存文件框,让用户选择要保存的文件如果用户选中一个已存在的文件,程序会提示是否覆盖 你的潜力,我们的动力!你的潜力,我们的动力!襄樊软件学院襄樊软件学院服务器服务器-客户端程序客户端程序数据保存功能数据保存功能如果用户确认保存,则建立File对象和FileWriter对象,进行数据保存工作如果保存成功,则返回“true”如果保存中出现任何问题,则返回“false”如果用户取消保存,则返回“false”如果saveFile函数返回“true”,则清空文件修改标志,否则保持文件修改标志不变

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com