计算机网络课程设计Word格式.docx
- 文档编号:14105705
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:20
- 大小:171.67KB
计算机网络课程设计Word格式.docx
《计算机网络课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
●聊天程序:
完成广播的公共聊天平台和单播的私人聊天,并应具有简单的帐号管
理功能;
●文件传输程序:
完成服务器端可供传输文件浏览、客户端目标路径可选、指定文
件传输等功能;
●电子邮件程序:
完成客户端在线收、发邮件,管理邮件等功能。
●套接字编程任选题目
2、撰写课程设计报告——题目、目的、方案设计、调试结果、心得体会。
3、周一查阅资料,设计方案;
周二至周四上机编写代码,调试实现;
周五演示程序、答辩,并上交课程设计报告。
4、两名同学一组,自由组合,并根据完成任务量情况署名。
5、撰写课程设计报告:
封皮(设计题目、专业、班级、学生姓名、学生学号、指导教师姓名、起止时间)、具体任务、软件环境、算法设计思想及流程图、源代码、运行结果、收获及体会、参考文献
成绩评定方法:
按对套接字基本知识的掌握程度,选定软件项目的典型性和难度,分析设计方案是否正确,功能实现是否完善,文档说明是否清楚、准确,格式是否规范等环节评分。
成绩按优、良、中、及格、不及格五级分制评定。
指导教师签字:
路莹肖鹏系(教研室)主任签字:
课程设计报告
设计题目:
套接字网络通信程序
专业计算机科学与技术
学生1计算机092-09王磊
学生2计算机092-12郑林
指导教师路莹,肖鹏
起止时间2012.6.25—2012.6.29
一、需求分析:
编写一个聊天程序,能够实现广播的公共聊天平台,并具有简单的帐号管理功能。
采用c/s模式,基于winsock套接字的网络通信程序,可实现双机通信。
二、概要设计
客户端模块功能:
界面:
显示登录按钮,退出按钮,消息显示框,消息发送框,发送按钮等功能性组件,及用户名,服务器IP,参与者等提示信息。
登录:
输入用户名,服务器IP,点击登陆按钮,实例化一个本地套接字,然后实例化客户端线程用来建立和服务端的连接。
退出:
关闭套接字,停止线程运行,并重新置空值。
消息发送:
使用登录时建立的套接字发送消息给服务器。
消息接受显示:
把从服务端传递过来的消息显示在聊天内容框。
算法设计:
(1)publicclassChatClient{}模块:
该模块作为创建客户的方法,其中包含客户端套接字的定义模块,客户端图形界面设计模块,连接服务器模块,接收消息的线程体模块,客户端按钮监听模块,监听处理模块等。
(2)客户端套接字的定义模块:
通过socket类创建一个socket类对象,连接到服务器端所开放的端口。
(3)客户端图形界面设计模块:
通过调用JFrame类的方法,设计客户端界面按钮和界面属性。
包括五个文本框,三个按钮(发送、登录、退出)。
(4)连接服务器模块:
通过服务器的IP地址和指定端口8888连接到服务器。
(5)接收消息的线程体模块:
通过创建多线程接收服务器发送的消息,加入异常处理。
(6)客户端按钮监听和处理模块:
通过为每个按钮创建监听器,以及为每个监听编写处理方法来处理客户端的操作。
例如当点击“发送”按钮时,监听器监测到用户的动作,通过调用相应的程序向服务器端发送客户端消息。
服务器端模块功能:
服务器端通过创建ServerSocket对象,为客户端提供IP地址和服务器开放的端口号,同时服务器还创建了两个列表,一个用来存放用户名,另一个用来存放线程。
服务器端通过监听8888端口,接收来自客服端的消息,并将其转发给每个客户端。
(1)publicclassChatServer{}模块:
该模块用来创建ServerSocket对象,启动服务器,通过创建的多线程监听开放端口,接收并转发客户端发来的消息。
(2)publicvoidstartServer(){}模块:
该模块的功能是启动服务器,获取服务器的IP,并加入了异常处理功能。
(3)publicvoidrun(){}模块:
该模块是消息接收和转发模块,通过端口接收消息并转发给每一个在线的客户端。
系统软件环境:
JDK2.0,NetbeansIDE6.9.1
三、详细设计
客户端代码:
packagejavaapplication27;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
import.*;
importjavax.swing.*;
importjava.text.*;
importjava.util.*;
/**
*聊天系统客户端
*
*/
publicclassChatClient{
Socketsocket;
DataOutputStreamdos;
//数据输出流
DataInputStreamdis;
booleanisConnected=false;
TextAreata1;
TextAreata2;
TextAreata3;
StringuserName;
StringserverIP;
Threadreceiver=newThread(newReceiverThread());
publicChatClient(){
newInterface();
}
//连接到服务器
publicvoidconnect()
{
try
{
socket=newSocket(serverIP,8888);
//传入端口号和IP
dos=newDataOutputStream(socket.getOutputStream());
//写入数据输出流中
dis=newDataInputStream(socket.getInputStream());
isConnected=true;
}
catch(UnknownHostExceptione)
System.out.println("
找不到服务器..."
);
}catch(IOExceptione)
e.printStackTrace();
//接收消息的线程体
classReceiverThreadimplementsRunnable
Stringstr=null;
publicvoidrun()
try
{
while(isConnected)//当连接成功
{
str=dis.readUTF();
//读出数据
if(str.startsWith("
@"
))//如果接收到的是在线者的名字
{
ta3.setText(str.substring(1,str.length()-1));
}
else
{//如果接收到的是聊天内容
ta1.setText(ta1.getText()+"
\n"
+str);
}
}catch(IOExceptione){
e.printStackTrace();
}
publicstaticvoidmain(String[]args){
try{//设置显示风格
UIManager.setLookAndFeel("
javax.swing.plaf.metal.MetalLookAndFeel"
}catch(Exceptione){
Can'
tsetthisLookAndFeel!
"
newChatClient();
classInterfaceextendsJFrameimplementsActionListener
{//客户端的界面
JTextFieldjtf1,jtf2;
publicInterface()
JPaneljp1=newJPanel();
jp1.setLayout(null);
ta1=newTextArea("
30,18,TextArea.SCROLLBARS_BOTH);
ta1.setEditable(false);
ta1.setBounds(6,0,420,265);
ta1.setBackground(Color.white);
ta2=newTextArea("
20,18,TextArea.SCROLLBARS_VERTICAL_ONLY);
//聊天内容输入区
ta2.setBounds(6,290,420,130);
JButtonjb1=newJButton("
发送"
jb1.addActionListener(this);
//给发送按钮注册监听器
jb1.setBounds(360,428,60,30);
jp1.add(ta1);
jp1.add(ta2);
jp1.add(jb1);
JPaneljp2=newJPanel();
//登录面板
//jp2.setBackground(color);
jtf1=newJTextField(15);
jtf2=newJTextField(15);
JButtonjb2=newJButton("
登录"
jb2.addActionListener(this);
//给登录按钮注册监听器
JButtonjb3=newJButton("
退出"
jb3.addActionListener(this);
//给退出按钮注册监听器
ta3=newTextArea("
21,15,TextArea.SCROLLBARS_VERTICAL_ONLY);
//在线者显示区
ta3.setEditable(false);
JPaneljp=newJPanel();
//jp.setBackground(color);
jp.add(jb2);
jp.add(jb3);
jp2.setLayout(newBoxLayout(jp2,BoxLayout.Y_AXIS));
//指定组件从上到下
jp2.add(newJLabel("
用户名"
));
jp2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计