计算机网络课程设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机网络课程设计实验报告

一、实验项目:网络聊天程序

二、实验要求:

利用Winsock控件,采用TCP或UDP方式实现一个网络聊天程序。具体要求如下:(1)能够实现一个聊天服务器(采用TCP方式时可同时允许15个用户连接),并在用户之间相互进行信息发送。

(2)具有聊天记录功能。

(3)制作一个客户端程序。

在课程设计报告中要求给出程序设计的思想、关键程序说明以及服务器和客户程序运行界面的屏幕截图。

三、实验程序功能:

采用TCP方式实现的网络聊天程序:

(1)以某一用户名注册进入聊天室,自动判断是否与现有聊天室人员重名,给出相关信息。进入后启动线程,获得现有聊天室人员的列表信息;

(2)点击[送出]按钮,向所有人发送信息。双击列表中某人的名字,在弹出的窗口中可以写悄悄话,悄悄话内容只显示在这个人的屏幕上;

(3)点击[刷新谈话区],可以清空聊天信息屏幕。点击[刷新聊天者列表]可以重新从服务器读取聊天室人员列表信息;

(4)点击[退出聊天室],向所有人发送离开信息,同时刷新聊天室人员列表;

(5)服务器端程序先行运行,服务器读取来自客户端的信息流请求,并把相应处理结果返回客户端,完成与客户端的通信。

(6)点击[聊天记录],可以查看聊天室的聊天记录。

四、设计与分析:客户端

聊天室客户/服务器通信图(《》表示信息流方向):

五、设计思想:

传输层协议有两种:TCP和UDP,TCP是可靠传输,它把信息包捆绑,在必要的时候,排序和重传这些信息包以获得可靠的数据传输。UDP支持快速的、无连接的、不可靠的信息包传输。

在JAVA中,使用TCP传输,其套接字的封装函数分TCP/IP客户套接字和

TCP/IP服务器套接字。本程序使用TCP做,采用了JA V A中的流式Socket 的通信机制,流式Socket 通信过程如下图:

客户套接字函数:Socket(String hostname,itn port)或

Socket(InetAddress ipAddress,int port)

服务端套接字函数:ServerSocket(int port)

ServerSocket(int port,int maxQueue)

ServerSocket(int port,int maxQueue,InetAddress localAddress)

六、文件说明:

文件清单:

(1)客户端线程主类:chatappletthree

public class chatserverthree implements Runnable

{/*聊天室服务器端处理主类*/

//服务器构造初始化线程

public chatserverthree()

{}

//服务器main()初始化

public static void main(String args[])

{}

//服务器线程connect操作run方法

public void run()

{}

//向聊天室所有人员发送普通话语信息

public void broadcast(String msg)

{}

//处理悄悄话,向特定人员发送悄悄话

public void broadcast1(String msg)

{}

//客户端线程类firstthread

class firstthread extends Thread

{}

//firstthread 初始化线程

public firstthread(chatserverthree server,Socket client)

{}

//监听运行线程

public void run()

{while(true){

line=in.readUTF();//line 读取来自客户端线路的信息

//线路信息前端为PEOPLE表明有新人进入了聊天室

if(line.startsWith("PEOPLE")){}

//线路信息前端为QUIT表明有人离开了聊天室

else if(line.startsWith("QUIT")){}

//线路前端为MSG表明接收到的是普通聊天话语信息

e lse if(line.startsWith("MSG")) {}

//线路前端为“悄悄的对”表明接收到的是悄悄话

else if(line.startsWith("悄悄地对")){}

//线路前端为newlist表明得到客户端刷新列表的请求

else if(line.startsWith("newlist")){}

}

}

(2) 聊天室界面AWT面板类:

Apanel:

/*聊天室界面北部面板Apanel类*/

class Apanel extends Panel //用于构造面板

{}

Bpanel:

/*聊天室界面中部面板Bpanel类*/

class Bpanel extends Panel

{}

Cpanel:

/*聊天室界面南部面板Cpanel类*/

class Cpanel extends Panel

{}

(3) 发送悄悄话弹出式窗口类:

Mywindow:

class Mywindow extends Frame implements ActionListener

{

//构造方法初始化画出弹出式窗口界面

Mywindow()

{}

//处理按钮事件的方法

public void actionPerformed(ActionEvent e)

{}

}

(4)服务器端线程类:Chatserverthree:

/*聊天室主类chatappletthree类*/

public class chatappletthree extends Applet implements Runnable,ActionListener,ItemListener {

//Applet 启动初始化画出聊天室界面,建立与服务器连接

public void init() {}

//启动线程

public void start()

{}

//终止线程

public void stop() {}

//关闭监听端口,断开连接

public void destroy() {}

//客户端启动线程

public void run() {}

}

(4)服务器为每一个客户端启动的线程类

Firstthread

//客户端线程类firstthread

class firstthread extends Thread

{

protected Socket client;

//listen读取来自客户端的消息:name 格式为:PEOPLE+名字+[性别]

String line,name;

protected DataOutputStream firstout,out; //定义网络数据输出流

protected chatserverthree server;

protected DataInputStream in; //定义网络数据输入流

//firstthread 初始化线程

public firstthread(chatserverthree server,Socket client)

{

相关文档
最新文档