JAVA课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京工程学院
课程设计说明书(论文)
题目聊天小程序
课程名称JA V A基础课程设计
院(系、部、中心)康尼学院
专业计算机科学与技术
班级 K软测111班
学生姓名杨莹
学号 240111508
设计地点信息楼A402
指导教师彭焕峰
成绩
设计起止时间:2013年12月23日至2013年12月27日
一、课程设计目的
本课程设计的目的是为了让学生在学习《JA V A基础》课程的基础上,
进一步深入巩固所学理论知识、使理论与实际相结合的重要实践环节。本课
程设计通过完成一些具有一定难度的程序的编写、调试、运行工作,掌握面
向过程程序设计的基本方法,从而提高学生分析问题、解决问题的能力。
课程设计是教学中很重要的一项实践环节,它可以帮助学生充分理解课堂教学中的内容,对提高学生的实践认识和实际动手能力都有很重要的实际意义。学生应在一周的时间内,按照课程设计的要求,结合所学的理论知识,查找相关资料,完成好本次课程设计,提高程序编写的能力,为将来的实际工作取得一定的经验。
二、课程设计题目及要求
要求:使用图形用户界面。能实现一个聊天室中多人聊天。
三、程序设计与分析
SeverSocket(port)
创建SeverSocket对象,提供TCP连接服务
Accept()
在指定端口等待
客户端的连接请求
连接成功,获得一个已经连接的Socke对象
InputStream读取Socket 对象的输入流OutputStream写入Socket对象的输入流
Socket.close()关闭TCP 连接
SeverSocket.close()停止提供TCP连接服务
Socket(host.port),创建Socket对象,向指定主
机端口发出连接请求InputStream读取Socket 对象的输入流OutputStream写入Socket对象的输入流Socket.close()关闭TCP 连接
客户端
一个Socket对象
服务端
一个serversocket(port)对
象和一个socket对象
申请连接
建立socket连接
通过流传送数据
1.窗口设置
super("聊天室 "+name+" ");//得到当前主机地址
this.setBounds(320,240,360,240);//窗口大小
this.setDefaultCloseOperation(EXIT_ON_CLOSE);//单击关闭就关闭窗口
this.text_receiver=new JTextArea();//接收信息文本区
this.text_receiver.setEditable(false);//文本区不可编辑
this.getContentPane().add(new
JScrollPane(this.text_receiver));//调用系统默认的容器,
//创建一个空的(无视口的视图)JScrollPane,需要时水平和垂直滚动条都可显示
//添加面板(里面在添加滚动窗格,这是带有滚动条的视图容器)
JPanel panel=new JPanel();//添加一个面板
this.getContentPane().add(panel,"South");//将面板添加在窗口的上方
this.text_sender=new JTextField(16);//发送信息文本行(可以编辑)
panel.add(this.text_sender);//将发送信息的文本行添加到面板上
button_send=new JButton("发送");//添加发送按钮
panel.add(button_send);//将发送按钮添加到面板上
button_leave=new JButton("离线");//添加离线按钮
panel.add(button_leave);//将离线按钮添加到面板上
this.setVisible(true);//设置窗口可见
2.服务器端
ServerSocket server=new ServerSocket(port);//ServerSocket提供TCP连接服务
Socket client=server.accept();//等待接受客户端的连接申请
new ChatTCPSocketJFrame(name,client);//聊天室的图形用户界面,同客户端
server.close();
3.连接服务器端
public ChatTCPSocketJFrame(String name,String host,int port)throws IOException
{
this(name,new Socket(host,port));//客户端向指定主机的端口发出TCP连接请求
}
4.显示连接并约定离线
=name;
this.socket=socket;
this.cout=new PrintWriter(socket.getOutputStream(),true);//获得Socket的输出流,true表示立即flush
//使用PrintWriter建立一个向clientSocket发送信息的通道,如果你要向客户端发送内容就可以通过调用
this.cout.println(name);
BufferedReader cin=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//获得Socket对象的输入流,
//创建字符输入流
String aline=cin.readLine();//从缓冲区BufferedReader中一行一行的读取,并返回到aline
text_receiver.append("连接"+aline+"成功"+"\r\n");
aline=cin.readLine();
while(aline!=null&&!aline.equals("bye"))
{
text_receiver.append(aline+"\r\n");
aline=cin.readLine();
}
cin.close();
cout.close();
socket.close();
button_send.setEnabled(false);
button_leave.setEnabled(false);
}
5.内容格式
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button_send)
{
this.cout.println(name+" 说:"+text_sender.getText());//通过流发送给对方,并且显示出来
text_receiver.append("我说:"+text_sender.getText()+"\n");