版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java网络编程课程设计学院:计算机与科学技术学院专业班级:随着网络的发展,计算机的功能越来越强大,人们对网络的也越来越依赖,聊天工具也日益普及,人们习惯了使用类似QQ、MSN这样的网络聊天工具,运用Java知识,我们可以做一个简单的网络聊天工具,可以实现简单的聊天功能。Java编写的聊天工具是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包以及java.util包等。程序实现了聊天室的基本功能,其中有:1、启动服务器。2、进入客户端界面。3、登录聊天室。4、发送信息(实现按回车键发送消息)。5、关闭服务器。在功能上,该软件采用套接字实现网络中的数据传输,尽量使用某个或某些应用层的协议实现系统的部分功能,系统设计规范合理,操作流程方便简单。聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。1.首先通过继承JFrame类构造服务器界面。2.设计客户端程序使其能够完成正常的通信功能,并且可以更改背景颜色,设置字体颜色。3.设计侦听程序,使其显示登录的ip地址端口号,以及用户昵称,通过侦听按钮可以调用客户端程序,实现聊天功能。聊天系统的详细设计:界面设计:主要由类ChatRoom来实现,界面实际总体如下:输入昵称的文本框,输入IP地址的文本框以及输入端口的文本框(可设置背景色);侦听,连接的按钮(可设置字体);推出按钮;接受消息的文本域(可设置前景色);发送消息文本框;发送按钮;插入图片。聊天室程序设计详细代码如下:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;import.*;importjava.io.*;importjava.util.*;publicclassChatRoomextendsJFrameimplementsActionListener,Runnable,KeyListener{ ImageImage; privateTextAreata; privateJTextFieldip; privateJTextFieldport; privateJButtonss_server; privateJButtonss_client; privateJTextFieldsend_text; privateJTextFieldname; privateJButtonss_send; privateJButtonss_exit; privateSocketskt; publicvoidkeyReleased(KeyEventf){} publicvoidkeyPressed(KeyEventf){ if(f.getKeyCode()==KeyEvent.VK_ENTER){ try{ PrintWriterpw=newPrintWriter(skt.getOutputStream()); Strings1=name.getText(); Strings=send_text.getText(); if(s==null)return; Calendarca=newGregorianCalendar();inthh=ca.get(Calendar.HOUR_OF_DAY);intmm=ca.get(Calendar.MINUTE);intss=ca.get(Calendar.SECOND);Stringtime=newString(hh+":"+mm+":"+ss+"");ta.append(time+s1+"说:"+"\n"+s+"\n");Strings3=time+s1+"说:"+"\n"+s; pw.println(s3); pw.flush(); send_text.setText(""); } catch(Exceptione){ ta.append("发送失败!\n"); }}}publicvoidkeyTyped(KeyEventf){} publicvoidrun() { try{ BufferedReaderbr=newBufferedReader(newInputStreamReader(skt.getInputStream())); while(true){ Strings=br.readLine(); if(s==null)break; ta.append(s+"\n"); } } catch(Exceptione){ e.printStackTrace(); } } publicvoidactionPerformed(ActionEvente) { if(e.getSource()==ss_server){ doServer(); } if(e.getSource()==ss_client){ doClient(); } if(e.getSource()==ss_send){ doSend(); } if(e.getSource()==ss_exit){ doexit(); } } publicvoiddoServer() { try{ ServerSocketserver=newServerSocket(Integer.parseInt(port.getText())); skt=server.accept(); ta.append("连接服务器成功!\n"); newThread(this).start(); } catch(Exceptione){ ta.append("服务器启动失败!\n"); } } publicvoiddoClient() { try{ skt=newSocket(ip.getText(),Integer.parseInt(port.getText())); ta.append("连接服务器成功!\n"); newThread(this).start(); } catch(Exceptione){ ta.append("连接失败!\n"); } } publicvoiddoSend() { try{ PrintWriterpw=newPrintWriter(skt.getOutputStream()); Strings1=name.getText(); Strings=send_text.getText(); if(s==null)return; Calendarca=newGregorianCalendar();inthh=ca.get(Calendar.HOUR_OF_DAY);intmm=ca.get(Calendar.MINUTE);intss=ca.get(Calendar.SECOND);Stringtime=newString(hh+":"+mm+":"+ss+"");ta.append(time+s1+"说:"+"\n"+s+"\n");Strings3=time+s1+"说:"+"\n"+s; pw.println(s3); pw.flush(); send_text.setText(""); } catch(Exceptione){ ta.append("发送失败!\n"); }}publicvoiddoexit() { System.exit(0); } publicChatRoom() { Panela1=newPanel();Panela2=newPanel();Panela3=newPanel(); this.setTitle("聊天室"); this.setBounds(200,200,600,500); Containercc=this.getContentPane(); JPanelp1=newJPanel(); cc.add(p1,BorderLayout.NORTH); p1.setBackground(newColor(200,200,250)); ta=newTextArea(); cc.add(ta,BorderLayout.CENTER); JPanelp2=newJPanel(); cc.add(p2,BorderLayout.SOUTH); p2.setBackground(newColor(250,150,200)); ta.setForeground(newColor(0,0,250)); JLabelp3=newJLabel(newImageIcon("IMG0064A.jpg")); cc.add(p3,BorderLayout.EAST); p1.add(newJLabel("昵称:")); name=newJTextField("",6); p1.add(name);name.setFont(newFont("宋体",Font.BOLD,14)); p1.add(newJLabel("IP:")); ip=newJTextField("",15); p1.add(ip); p1.add(newJLabel("Port:")); port=newJTextField("8888",4); p1.add(port); ss_server=newJButton("侦听"); ss_server.setForeground(newColor(150,100,250)); ss_server.setFont(newFont("宋体",Font.BOLD,14)); p1.add(ss_server); ss_client=newJButton("连接"); ss_client.setForeground(newColor(150,100,250)); ss_client.setFont(newFont("宋体",Font.BOLD,14)); p1.add(ss_client); ss_exit=newJButton("退出"); ss_exit.setForeground(newColor(150,100,250)); ss_exit.setFont(newFont("宋体",Font.BOLD,14)); p1.add(ss_exit); p2.setLayout(newBorderLayout()); p2.add(newJLabel("发送消息:"),BorderLayout.WEST); p2.setBackground(newColor(200,200,250)); send_text=newJTextField("在?"); p2.add(send_text,BorderLayout.CENTER); ss_send=newJButton("发送"); p2.add(ss_send,BorderLayout.EAST); ss_exit.addActionListener(this);send_text.addKeyListener(this); ss_server.addActionListener(this); ss_client.addActionListener(this); ss_s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校《大学计算机基础》课程题库管理系统的设计与实现:基于高效教学与个性化学习的探索
- 高新技术企业全面风险管理评价指标体系构建与实证研究
- 高一政治上学期备考检测试卷
- 角膜裂伤修补术知情同意书
- 养老护理技能竞赛理论题及答案
- 创伤后脂肪栓塞综合征试题(附答案)
- 加气混凝土砌块砌块试题(附答案)
- 输液反应应急预案及脚本
- 应急救援安全知识题库(含标准答案)
- 浙江省2025年度城乡风貌样板区试点实施方案
- 2026年中央驻山西省政法机关直属事业单位工作人员招聘参考题库及参考答案详解【培优】
- 2026年贵州省算力科技有限责任公司第一批人员招聘20人笔试备考试题及答案详解
- 《羊饲养与疫病防》课件
- 美容美体艺术-大学专业介绍
- DB13-T 5931-2024 珍珠棉生产企业安全生产技术条件
- 2024年全国各地中考语文真题分类汇编【第二辑】专题09 散文阅读(含答案)
- DL-T5842-2021110kV~750kV架空输电线路铁塔基础施工工艺导则
- 医院培训课件:《小儿荨麻疹的护理查房》
- 蔬菜栽培学总论-期末考试-考研复试
- 学生缓期考试申请表(模板)
- 2023年瑞安市交通运输集团有限公司招聘笔试题库及答案解析
评论
0/150
提交评论