Java网络编程课程设计_第1页
Java网络编程课程设计_第2页
Java网络编程课程设计_第3页
Java网络编程课程设计_第4页
Java网络编程课程设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论