Java程序设计pp10教学课件.ppt

上传人:春哥&#****71; 文档编号:87511872 上传时间:2023-04-16 格式:PPT 页数:64 大小:4.80MB
返回 下载 相关 举报
Java程序设计pp10教学课件.ppt_第1页
第1页 / 共64页
Java程序设计pp10教学课件.ppt_第2页
第2页 / 共64页
点击查看更多>>
资源描述

《Java程序设计pp10教学课件.ppt》由会员分享,可在线阅读,更多相关《Java程序设计pp10教学课件.ppt(64页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Java程序设计pp10教学课件Java程序设计目录目录第 10 章网络应用程序设计10.1 网络开发基础概述10.2 Socket编程10.3 基于URL编程10.4 UDP编程10.5 聊天室应用程序实例10.1 网络开发基础概述所有使用或实现某种所有使用或实现某种Internet服务的程序都服务的程序都必须遵从一个或多个网络协议(必须遵从一个或多个网络协议(protocol)。这)。这种协议很多,而种协议很多,而Internet协议(协议(Internet protocol,IP)、传输控制协议()、传输控制协议(transport control protocol,TCP)、用户数据报

2、协议)、用户数据报协议(user datagram protocol,UDP)是最基本)是最基本的的3种协议,是所有其他协议的基础。种协议,是所有其他协议的基础。10.1 网络开发基础概述10.1.1 TCP/IPIP是网络最底层的协议,它定义了数据按照数据报(datagram)传输的格式和规则。IP地址是用来唯一标识连接到Internet的计算机的数字地址,由32位二进制数(0或1)组成。这种表示方式便于计算机理解,却不利于人们的记忆和表示,所以人们将这32位二进制数用4位十进制数来表示。计算机的IP地址就好比是每个家庭的邮政地址,一个邮政地址可以唯一地标识出一个家庭。也就是说,通过IP地址

3、,每台计算机才能被唯一地标识出来。TCP是建立在IP之上的。TCP定义了网络上程序到程序的数据传输格式和规则,提供了IP数据包的传输确认、丢失数据包的重新请求、将收到的数据包按照它们的发送次序重新装配的机制。10.1 网络开发基础概述10.1.2 UDP与TCP的有连接相比,UDP是一种无连接协议。总体来说,UDP与TCP相似,但它是不可靠的,即UDP不保证数据的传输,也不提供重新排列次序或重新请求功能。(1)在收发数据时,应用程序是否需要得到客户端或服务器的确认信息?如果需要,那么使用TCP,在收发数据之前先建立明确的连接。(2)数据量是否特别大?在连接建立之后,TCP将维护连接并确保数据的

4、完整性。但是这种连接需要更多的计算资源。如果对数据的传输质量要求较高,则应该使用TCP。(3)数据发送是间歇的,还是在一个会话内?例如,如果应用程序在某个任务完成时需要通知某个计算机,那么UDP是合适的,因为UDP适合发送少量的数据。10.1 网络开发基础概述10.1.3 域名如果说IP地址是Internet中计算机的数字型标识,那么域名就是计算机的字符型标识。这是因为即使人们使用了4位十进制数表示IP地址,在使用时仍难以记忆和书写,因此在IP地址的基础上出现了一种符号化的表示方法,即域名。域名中的每一个符号化的地址都与特定的IP地址相对应,这样访问网络上的资源就会变得相当容易。简单地说,域名

5、就是上网单位的名称,是一个通过计算机访问网络的单位在该网络中的地址。任何一个单位如果希望在网络上建立自己的主页或网站,就必须取得一个域名。10.1 网络开发基础概述InetAddress类中定义的主要方法如下。(1)getAddress()。(2)getAllByName(String host)。(3)getByAddress(byte addr)。(4)getByAddress(String host,byte addr)。(5)getByName(String host)。(6)getHostAddress()。(7)getHostName()。(8)getLocalHost()。(9)

6、isReachable(int timeout)。(10)String toString()。10.1 网络开发基础概述【例10-1】使用InetAddress类。在记事本中输入以下代码。import .InetAddress;public class InetAddressTestpublic static void main(String args)throws ExceptionInetAddress ia;/定义InetAddress对象iaia=InetAddress.getLocalHost();/获得本地主机的InetAddress对象/输出本地主机IPSystem.out.pr

7、intln(本地主机IP为:+ia.getHostAddress());/输出本地主机名10.1 网络开发基础概述程序的运行结果如图10-1所示。10.1 网络开发基础概述10.1.4 端口号IP地址和域名唯一地标识了网络中的每一台计算机,但是由于现在每一台计算机上都同时运行着多个程序,为了与计算机上的指定程序通信,就需要用一个标识符来指定该程序,这个标识符就是端口号。端口号并不是计算机上物理存在的标识,而是一种软件抽象。当两台计算机的程序要进行通信时,需要知道要连接的计算机的IP地址和对应的端口号。因此,在编写网络应用程序时,需要为程序指定一个端口号,也可以由操作系统分配一个端口号。两台计算

8、机上的程序通过指定的端口号进行通信。需要说明的是,并不是所有端口号都可以由开发人员使用,某些端口号已经被网络公共服务协议使用了。例如,端口号80是WWW服务的默认端口号,端口号21是文件传输协议(FTP)的默认端口号。10.1 网络开发基础概述10.1.5 C/S结构与B/S结构客户机/服务器(client/server,C/S)体系结构是网络计算结构中最基本的一种。server是提供服务的程序或能够提供服务程序的计算机,client是请求服务的程序或运行请求服务程序的计算机,一个完整的网络应用系统是由server端的应用程序和client端的应用程序组成的。在网络计算环境中,处于不同地位的计

9、算机有不同的用途,在其上运行的应用程序也会随之不同。在设计和开发网络应用程序前,应划分其内容和分工。一般来说,server端的程序应该工作在高性能、大容量、高运算速度的机器上。因此,server端的应用程序应该设计为具有响应多个client的服务请求、包含较为复杂的数据处理、能够直接与数据库交互等多项功能;而client端的应用程序直接与用户交互,应该设计为具有友好图形用户界面且便于操作。10.1 网络开发基础概述随着Internet和WWW的流行,C/S结构的应用程序已经无法满足当前全球网络开放、信息随处可见和信息共享的新要求,于是就出现了B/S结构的应用程序。浏览器/服务器结构(brows

10、er/server,B/S)是随着Internet技术的兴起,对C/S结构的一种变化或改进的结构。在这种结构下,用户工作界面是通过WWW浏览器实现的,极少部分的事务逻辑在浏览器端实现,主要的事务逻辑在服务器端实现,形成所谓的三层结构。可见,B/S结构大大简化了客户端的载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。B/S结构的网络应用开发成本较低,能让不同的人员从不同的地点以不同的接入方式访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,因此,数据库服务器很安全。特别是在Java这样的跨平台语言出现后,B/S结构应用程序的开发成为目前主流的软件开发模式。10.2 S

11、ocket编程10.2.1 Socket通信机制在C/S通信模式中,服务器提供了数据存储、修改或查询等服务,客户机上收到的数据次序应该与服务器提供的次序相同,这就要求客户机与服务器之间建立可靠的连接。Java提供了两种通信工具,分别是使用用户数据报协议(UDP)的报文和使用TCP/IP的Socket。Socket是一种软件抽象,并不是物理存在于计算机中的。Socket将要进行通信的计算机的IP地址和通信程序所使用的端口号合在一起。TCP/IP连接是可靠、双向、持续的点对点流式连接。Socket使用TCP通信,只要客户机遵循TCP/IP,服务器就可以对其请求进行服务,而不需要考虑客户机请求来自何

12、处。因此,所有遵循TCP/IP的计算机都可以通过Socket进行通信。(1)accept()该方法用于产生等待,直到接收到一个连接,并返回一个客户端的 Socket 对象实例。该方法用于获得网络连接输入,同时返回一个 InputStream 对象实例。(2)getInputStream()该方法用于从连接的另一端处得到输入,同时返回一个OutputStream 对象实例。(3)getOutputStream()该方法用于关闭该套接字对象实例。(4)close()10.2 Socket编程编程时ServerSocket类和Socket类最常使用的方法如下。在服务器与客户机之间通过套接字进行通信的

13、过程如图10-2所示。10.2 Socket编程10.2.2 使用ServerSocket在服务器端编程在服务器端编程主要使用在服务器端编程主要使用ServerSocket类。使类。使用用ServerSocket编写服务器端程序时需要指定监听编写服务器端程序时需要指定监听的端口,然后等待来自客户端的连接请求,在完成的端口,然后等待来自客户端的连接请求,在完成连接后进行会话,会话完成后关闭连接。连接后进行会话,会话完成后关闭连接。10.2 Socket编程程序的运行结果如图10-3所示。10.2 Socket编程10.2.3 使用Socket在客户端编程在客户端编程主要使用在客户端编程主要使用S

14、ocketSocket类。使用类。使用SocketSocket编写客户端程序时需编写客户端程序时需要向指定服务器地址的某个监听端口要向指定服务器地址的某个监听端口发出连接请求,连接成功后就可以进发出连接请求,连接成功后就可以进行会话,会话完成后则需要关闭连接。行会话,会话完成后则需要关闭连接。10.2 Socket编程【例【例10-3】使用】使用Socket编写客户端程序。编写客户端程序。在记事本中输入以下代码。在记事本中输入以下代码。import java.io.*;import .*;public class ClientSocket socket;BufferedReader in;Pr

15、intWriter out;public Client()()10.2 Socket编程程序的运行结果如图10-4所示。10.2 Socket编程10.2.4 支持多客户的Socket编程实例以上两个示例程序分别演示了如何使用ServerSocket和Socket在服务器端和客户端进行编程,服务器端的监听程序只需要接收到一次来自客户端的连接请求就会结束监听,客户端的连接请求只要被服务器端响应,也会在完成会话内容后结束。在Java中,实现支持多客户响应的服务器端程序是非常容易的。可以在服务器端监听固定的端口,等待客户端的连接请求;因为要支持多个客户端上的连接响应,所以通过构造多线程来接管每一个连

16、接请求的会话,而主程序则继续监听即可。下面的例子演示了如何使用多线程实现支持多客户端响应的服务器端程序。10.2 Socket编程 【例【例10-4】使用多线程编写支持多客户端响应的服务】使用多线程编写支持多客户端响应的服务器端程序。器端程序。在记事本中输入以下代码。在记事本中输入以下代码。import java.io.*;import .*;public class Server extends ServerSocketprivate static final int SERVER_PORT=10000;public Server()()throws IOExceptionsuper(SER

17、VER_PORT);try10.2 Socket编程运行结果如图10-5所示。而此时服务器端程序的运行结果如图10-6所示。10.2 Socket编程10.3 基于URL编程1)URL的组成一个URL通常包含协议方法、主机名、端口号和路径等。10.3.1 URL的组成与创建(4)路径。URL中的路径(也称为文件)是指由零个或多个符号“/”隔开的字符串,一般用来表示主机上的一个目录或文件地址。(3)端口号。端口号在URL中为可选项。各种传输协议都有默认的端口号,如HTTP的默认端口为80。(2)主机名。主机名是指存放资源的服务器的域名系统(DNS)或 IP 地址。(1)协议方法。URL中的协议方

18、法指定了访问资源时所使用的传输协议。最常用的是HTTP,它也是目前WWW中应用最广的协议。2)创建URL(1)URL(String spec)。该方法用于根据指定的String表示形式创建URL对象。(2)URL(String protocol,String host,int port,String file)。该方法用于根据指定的协议名称、主机名、端口号和资源文件名创建URL对象。(3)URL(String protocol,String host,String file)。该方法用于根据指定的协议名称、主机名、资源文件名创建URL对象。10.3 基于URL编程Java中创建URL对象的常用

19、方法如下。URL对象的常用方法如下。(1)equals(Object obj)。该方法用于比较此URL对象是否等于另一个对象。(2)getContent()。该方法用于获取此URL的内容。(3)getContent(Class classes)。该方法用于获取此URL的内容。(4)getDefaultPort()。该方法用于获取与此URL关联协议的默认端口号。(5)getFile()。该方法用于获取此URL的文件名。(6)getHost()。该方法用于获取此URL的主机名。(7)getPath()。该方法用于获取此URL的路径部分。(8)getPort()。该方法用于获取此URL的端口号。(9

20、)getProtocol()。该方法用于获取此URL的协议名称。(10)toString()。该方法用于构造此URL的字符串表示形式。10.3 基于URL编程10.3.2 URL编程实例下面的例子演示了如何通过使用URL链接一个地址,获取URL的相关信息。【例10-5】使用URL链接一个地址,获取URL的相关信息。在记事本中输入以下代码。import .MalformedURLException;import .URL;public class URLTestpublic static void main(String args)tryURL url=new URL(http:/);Syste

21、m.out.println(协议:+url.getProtocol();10.3 基于URL编程程序的运行结果如图10-7所示。10.3 基于URL编程10.4 UDP编程10.4.1 UDP与数据报在进行网络应用开发时,除了使用前面介绍的TCP/IP(如标准的应用层协议HTTP、FTP、SMTP等使用的都是TCP),还经常用到UDP。相比而言,UDP的应用不如TCP广泛,但是UDP比TCP更适合使用在一些需要很强的实时交互性的场合,如网络游戏、视频会议等。在UDP中出现的datagram即为数据报。数据报是一种完备的、独立的数据实体,该实体携带要从源计算机传递到目的计算机的信息。与TCP/I

22、P中传输的信息和数据相比,datagram有可能传送失败,或无法保证接收顺序与发送顺序的一致性,因此,对数据结构的要求要比Socket稍微严格一点。但是其最大的优势是网络传输速度,因为这种传输协议免去了很多烦琐的传输步骤,总性能优于TCP/IP。10.4.2 DatagramPacket类(1)DatagramPacket(byte buf,int length)。该方法用于创建一个接收数据报的DatagramPacket 对象,参数中的字节数组buf表示接收数据报的数据部分,length表示要接收的数据报的长度。(2)DatagramPacket(byte buf,int length,In

23、etAddress address,int port)。该方法用于创建一个发送给远程系统的数据报DatagramPacket对象。参数中的字节数组buf表示要发送的编码报文,length表示字节数组(报文)的长度,InetAddress对象address表示要发送数据报的目的地或接收者的IP地址,port表示目标主机的端口号。10.4 UDP编程DatagramPacket类的构造方法如下。下面是由DatagramPacket类定义的几种常用方法。(1)InetAddress getAddress()。(2)getData()。(3)getLength()。(4)getPort()。(5)se

24、tData(byte buf)。(6)setData(byte buf,int offset,int length)。(7)setLength(int length)。(8)setPort(int port)。(9)setSocketAddress(SocketAddress address)。10.4 UDP编程10.4.3 DatagramSocket类(1)public DatagramSocket()。该方法用于创建一个数据报Socket,并将该Socket连接在本地主机的任何一个可用端口上。(2)public DatagramSocket(int port)。该方法用于创建一个Dat

25、agramSocket对象,并指定了所使用的端口。(3)public DatagramSocket(int port,InetAddress addr)。该方法用于创建一个DatagramSocket 对象,并指定了所使用的端口和主机的IP地址。10.4 UDP编程DatagramSocket类的构造方法如下。(1)InetAddress getInetAddress()。(2)InetAddress getLocalAddress()。(3)int getLocalPort()。(4)int getPort()。(5)void receive(DatagramPacket p)。(6)voi

26、d send(DatagramPacket p)。(7)void close()。10.4 UDP编程下面是由DatagramSocket类定义的常用方法。10.4.4 数据报的发送与接收(1)创建DatagramPacket对象,使其包含要发送的数据、数据分组长度、要发送的目标机器的IP地址和端口号。(2)在可用或指定的端口创建DatagramSocket对象。(3)调用DatagramSocket对象的send()方法,发送数据报。10.4 UDP编程数据报的发送过程分为以下3个步骤。(1)创建用于接收数据报的DatagramPacket对象,其中包含空白数据缓冲区和数据报的分组长度。(2

27、)在可用或指定端口创建DatagramSocket对象。(3)调用DatagramSocket对象的receive()方法,接收数据报。10.4 UDP编程数据报的接收过程分为以下3个步骤。【例10-6】使用DatagramPacket类和DatagramSocket类进行UDP通信。(1)在记事本中输入以下客户端代码。/UDPClient.javaimport java.io.*;import .*;public class UDPClientpublic static void main(String args)throws Exception/建立DatagramSocket对象Buff

28、eredReader infromUser=new BufferedReader(new InputStreamReader(System.in);10.4 UDP编程客户端程序的运行结果如图10-8所示,服务器端程序的运行结果如图10-9所示。10.4 UDP编程10.5 聊天室应用程序实例10.5.1 登录界面聊天室程序的登录界面负责接收用户输入的登录信息(包括用户名和密码)。如果用户输入的登录信息正确,即存在该用户,就会进入聊天界面中,否则将提示用户名或密码错误的信息。在该界面中还提供了注册用户的功能按钮,即单击“注册”按钮可以打开注册界面。【例【例10-7】实现登录界面。】实现登录界面

29、。在记事本中输入以下代码。在记事本中输入以下代码。package com.client.view;import javax.swing.*;import com.client.model.ClientUser;import com.client.tools.ManageChat;import mon.*;import java.awt.*;import java.awt.event.*;public class ClientLogin extends JFrame implements ActionListener10.5 聊天室应用程序实例程序的运行结果为一个JFrame窗体,可以接收用户输

30、入的账号和密码,并向用户提供注册功能,如图10-10所示。10.5 聊天室应用程序实例10.5.2 注册界面在注册界面中,用户可以完成的操作是注册一个新的用户。当用户按照界面中的提示输入用户名和两次密码之后,单击“确定”按钮,程序会加载JDBC模块,在数据库表中查找是否有与用户输入的用户名相同的行。由于在聊天室应用程序中用户名是数据库表中唯一标识不同用户的属性,所以用户名不能相同,然后核对两次输入的密码是否相同。如果输入的用户名在数据库表中不存在且两次输入的密码相同,程序将把新用户的信息写入数据库中,否则将提示错误信息。10.5 聊天室应用程序实例程序运行的结果为一个JFrame窗体,可以接收

31、用户输入的账号和重复输入的密码,在检查正确后将用户信息写入数据库表中,否则将提示用户名已存在或密码不一致的错误信息,如图10-11所示。10.5 聊天室应用程序实例10.5.3 聊天界面聊天界面是一个客户端程序界面,其主要作用是收集和输出与聊天相关的Message类对象。Message类主要包含信息主体,信息包括内容、时间和说话的用户,其构造将在后面的内容中进行介绍。在聊天界面中,当用户单击“发送”按钮时,聊天信息将被发送到服务器端,同时接收服务器端返回的信息,通过解析后再将其按照一定的格式输出。10.5 聊天室应用程序实例程序运行的结果是一个JFrame窗体,可以接收用户输入的聊天内容,单击

32、“发送”按钮后聊天内容将被提交到服务器端;服务器端将该聊天内容与用户名进行一定的组合后回显到聊天界面中,如图10-12所示。10.5 聊天室应用程序实例10.5.4 服务器界面聊天室应用程序的服务器界面很简单,只需要完成启动服务器和关闭服务器两个功能。因此,只需要在服务器界面上设计两个按钮来完成相应的功能。10.5 聊天室应用程序实例程序运行的结果是一个JFrame窗体,通过单击不同的按钮完成启动服务器或关闭服务器的操作,如图10-13所示。10.5 聊天室应用程序实例10.5.5 相关类的代码实现1)Server类Server类的主要功能是注册服务器Socket,并在9999端口监听来自客户

33、端的请求。如果监听到有客户端请求,则验证用户名和密码,如果验证结果正确,则启动与该客户端保持通信的线程SerConClientThread。当聊天结束时,Socket对象被注销。10.5 聊天室应用程序实例2)SerConClientThread类SerConClientThread类继承自Thread类,是服务器端响应客户端请求的工具类。在其构造方法中把客户端登录用的Socket对象传递给线程,然后在线程方法中通过遍历管理服务器端连接客户端线程的哈希表,同时获得这些线程,并把消息封装为Message类的对象,从而最终以流的形式发送出去。10.5 聊天室应用程序实例3)ManageClient

34、Thread类ManageClientThreadManageClientThread类是在服务器端维护客户端类是在服务器端维护客户端与服务器端连接状态的工具类。该类维护一个哈希表,与服务器端连接状态的工具类。该类维护一个哈希表,每当有客户端请求时,就把这个用户加入哈希表中,每当有客户端请求时,就把这个用户加入哈希表中,也可以获取通信的线程。也可以获取通信的线程。10.5 聊天室应用程序实例10.5.5 相关类的代码实现3)ManageClientThread类具体的实现代码如下。package com.server.model;import java.util.*;public class

35、ManageClientThreadpublic static HashMap hm=new HashMap();/向hm中添加一个客户端通信线程public static void addClientThread(String uid,SerConClientThread ct)hm.put(uid,ct);10.5 聊天室应用程序实例4)ClientConServer类ClientConServer类用于在客户端管理与服务类用于在客户端管理与服务器端的连接。创建器端的连接。创建Socket对象时,由于本程序的服对象时,由于本程序的服务器端也在本地,故把务器端也在本地,故把url设为设为12

36、7.0.0.1,端口是,端口是9999。登录成功之后,客户端新开线程来维护与服。登录成功之后,客户端新开线程来维护与服务器端的操作。在程序需要结束时则注销连接中用务器端的操作。在程序需要结束时则注销连接中用到的对象。到的对象。10.5 聊天室应用程序实例具体的实现代码如下。package com.client.model;import java.util.*;import .*;import java.io.*;import mon.*;import com.client.tools.*;public class ClientConServerpublic Socket s;/发送第一次请求1

37、0.5 聊天室应用程序实例5)ClientUser类ClientUser类主要通过checkUser()方法检测用户是否为注册用户,即起到登录检查的作用。具体的实现代码如下。package com.client.model;import mon.*;public class ClientUserpublic boolean checkUser(User u)return new ClientConServer().sendLoginInfoToServer(u);10.5 聊天室应用程序实例6)ClientConServerThread类ClientConServerThread类运行在客户端

38、,它继承自Thread类,在构造方法中将和与服务器端连接的Socket一同传递进来。它的线程方法负责不停地读取从服务器端发来的消息,并把消息转换为Message类的对象,然后通过Chat类的对象调用窗口类的方法,把获取的信息显示在客户端的聊天界面上。10.5 聊天室应用程序实例7)ManageChat类 ManageChat类用来管理当前聊天的用户,用户登录聊天室,就把该用户的id加入服务器端维护的哈希表中;当用户退出时,则删除该用户。10.5 聊天室应用程序实例具体的实现代码如下。package com.client.tools;import java.util.*;import com.c

39、lient.view.*;public class ManageChatpublic static HashMap hmChat=new HashMap();/加入public static void addChat(String uid,Chat chat)hmChat.put(uid,chat);/取出10.5 聊天室应用程序实例8)ManageClientConServerThread类ManageClientConServerThreadManageClientConServerThread类维护客户端到服类维护客户端到服务器端的连接。除了可以维护哈希表中记录的连接情务器端的连接。除了

40、可以维护哈希表中记录的连接情况外,还可以通过况外,还可以通过uiduid取得该链接的线程。取得该链接的线程。10.5 聊天室应用程序实例具体的实现代码如下。package com.client.tools;import java.util.HashMap;public class ManageClientConServerThread/把创建好的ClientConServerThread放入hmprivate static HashMap hm=new HashMap();public static void addClientConServerThread(String uid,Client

41、ConServerThread ccst)10.5 聊天室应用程序实例9)Message类Message类是程序的数据核心,它包括类是程序的数据核心,它包括mesType、hmSize、sender、con、sendTime等等5个属性。其中,个属性。其中,mesType表示消息类型;表示消息类型;hmSize表表示所维护的用户连接的哈希表的大小;示所维护的用户连接的哈希表的大小;sender 表示表示消息的发送人;消息的发送人;sendTime表示消息的发送时间。此表示消息的发送时间。此外,为了便于类直接以对象形式传送数据,外,为了便于类直接以对象形式传送数据,Message类还实现了类还实

42、现了Serializable接口。接口。10.5 聊天室应用程序实例10)MessageType类MessageType类较为简单,其作用为标识消息类型。具体的实现代码如下。package mon;public class MessageTypeString message_succeed=1;/表明登录成功String message_login_fail=2;/表明登录失败String message_comm_mes=3;/普通信息包10.5 聊天室应用程序实例11)User类User类表示用户,包括属性userId和passwd。userId是唯一的,可以使当前用户区别于其他用户,pa

43、sswd是用户的密码。程序中会在需要验证用户信息时建立一个User对象,也会在登录成功之后用数据库的信息建立一个User对象。10.5 聊天室应用程序实例具体的实现代码如下。package mon;public class User implements java.io.Serializableprivate String userId;private String passwd;public String getUserId()return userId;public void setUserId(String userId)this.userId=userId;10.5 聊天室应用程序实例谢谢观看!

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档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