2024年6月7日发(作者:)

实验十五 Java建立一个简单的聊天程序

一 实验目的

1、 掌握 ServerSocket 类的用法;

2、 熟悉 GetInputStrea m()输入流方法的使用 ;

3、 熟悉 GetOutputStream()输出流方法的使用 。

二 实验内容

本实验是实现一个简单的聊天程序,利用 Socket 实现服务器端与客

户端的握手、连接、对话。服务器端启动后,等待客户端的连接,客

户端启动后,与服务器通信成功,如图所示。

在输入界面各输入通信内容,如下图

三 实验环境与分组

1 任意 JAVA 编程环境,推荐 eclipse;

2 两个同学一组,修改上个实验的服务器程序,并进行通讯实验。

四 实验原理

用服务器需要的端口号作为参数来创建服务器对象。

server=new

ServerSocket(4000);

这个服务器使用 4000 端口,当一个客户端程序建立一个

Socket 连接,所连接的端口号为 4000 时,服务器对象 Server 便

响应这个连接,并且 ()方法会创建一个 Socket 对

象。服务器端便可以利用这个 Socket 对象与客户进行通信。

connection=()

进而得到输入流和输出流,并进行封装:

inputS=new ObjectInputStream(utStream())

outputS=newObjectOutputStream(putStream())

相比服务器端而言,客户端要简单一些,客户端只需用服务器所

在机器的地址以及服务器的端口作为参数创建一个 Socket 对象。得

到这个对象后,就可以用“建立服务器”部分介绍的方法实现数据

的输入输出。

toclient=new Socket(ame(chatServer),4000);

inputS=new ObjectInputStream(ut Stream());

outputS= new ObjectOutputStream(putStream());

以上的程序建立了一个 Socket 对象,这个对象连接到 IP 地址

为 ame(chatServer)的主机上、端口为 4000 的

服务器对象,并且建立了输入流和输出流,分别对应服务器的输出和

客户端的写入。

本案例可支持多线程

try{

//建立服务器

ServerSocket server =new ServerSocket(9998);

int i=1

for(;;)

{

Socket incoming =();

new ServerThread(incoming,i).start();

i++;

}

}catch(IOException e){

tackTrace();

}

}

循环检测是否有客户连接到服务器上,如果有,则创建一个线程

来服务这个客户,这个线程的名称是 ServerThread,这个类扩展了

Thread 类,它的编写方法与服务器写法相同。

五 实验步骤

步骤一:需求分析

程序要求为:

1、 有聊天界面 ;

2、 客户端和服务器端都可以接收到数据并显示在聊天界面上。

步骤二:服务器端

服务器端和客户端的主要差别就是其他需要等待连接

步骤三:客户机端

步骤四:编译和执行程序

六 实验总结

编写这个简单的聊天程序可以加深对 SOCKET 的理解。同时初步

接触一下怎么样用 JAVA 来编写程序界面。