Java网络编程课程设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java网络编程课程设计
学 院:计算机与科学技术学院 专业班级:
随着网络的发展,计算机的功能越来越强大,人们对网络的也越来 越依赖,聊天工具也日益普及,人们习惯了使用类似QQ 、MSN这样的 网络聊天工具,运用Java知识,我们可以做一个简单的网络聊天工具, 可以实现简单的聊天功能。 Java编写的聊天工具是图形界面,线程,流与文件系统等技术的综 合应用。其界面主要采用了java.awt包,java.swing包以及java.util 包等。程序实现了聊天室的基本功能,其中有: 1、启动服务器。
BufferedReader(new
{ try{ ServerSocket server = ServerSocket(Integer.parseInt(port.getText())); skt = server.accept(); ta.append("连接服务器成功!\n"); new Thread(this).start(); } catch(Exception e){ ta.append("服务器启动失败!\n"); } } public void doClient() { try{ skt = new Socket(ip.getText(), Integer.parseInt(port.getText())); ta.append("连接服务器成功!\n"); new Thread(this).start(); } catch(Exception e){ ta.append("连接失败!\n"); } } public void doSend() { try{ PrintWriter pw = new PrintWriter(skt.getOutputStream()); String s1=name.getText(); String s =Leabharlann Baidusend_text.getText(); if(s==null) return; Calendar ca= new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Calendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = new String(hh + ":" + mm + ":" + ss + " ");
new
ta.append(time+s1+"说:"+"\n"+s+"\n"); String s3=time+s1+"说:"+"\n"+s; pw.println(s3); pw.flush(); send_text.setText(""); } catch(Exception e){ ta.append("发送失败!\n"); } } public void doexit() { System.exit(0); } public ChatRoom() { Panel a1 = new Panel(); Panel a2 = new Panel(); Panel a3 = new Panel(); this.setTitle("聊天室"); this.setBounds(200,200,600,500); Container cc = this.getContentPane(); JPanel p1 = new JPanel(); cc.add(p1, BorderLayout.NORTH); p1.setBackground(new Color(200,200,250)); ta = new TextArea(); cc.add(ta, BorderLayout.CENTER); JPanel p2 = new JPanel(); cc.add(p2, BorderLayout.SOUTH); p2.setBackground(new Color(250,150,200)); ta.setForeground(new Color(0,0,250)); JLabel p3 = new JLabel(new ImageIcon("IMG0064A.jpg")); cc.add(p3, BorderLayout.EAST);
2、进入客户端界面。 3、登录聊天室。 4、发送信息(实现按回车键发送消息)。 5、关闭服务器。 在功能上,该软件采用套接字实现网络中的数据传输,尽量使用某 个或某些应用层的协议实现系统的部分功能,系统设计规范合理,操作 流程方便简单。 聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设 计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设 计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在 设计聊天系统的过程中,必须要考虑好以下几个设计要点: 在Internet上的聊天程序一般都是以服务器提供服务端连接响应, 使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的 用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境 下,实现服务器端和客户端两部分程序。 1.首先通过继承JFrame类构造服务器界面。 2.设计客户端程序使其能够完成正常的通信功能,并且可以更改背景 颜色,设置字体颜色。 3.设计侦听程序,使其显示登录的ip地址端口号,以及用户昵称,通 过侦听按钮可以调用客户端程序,实现聊天功能。 聊天系统的详细设计: 界面设计:主要由类ChatRoom来实现,界面实际总体如下:输入昵称的 文本框,输入IP地址的文本框以及输入端口的文本框(可设置背景 色);侦听,连接的按钮(可设置字体);推出按钮;接受消息的文本 域(可设置前景色);发送消息文本框;发送按钮;插入图片。 聊天室程序设计详细代码如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*;
p1.add(new JLabel("昵称:")); name=new JTextField("",6); p1.add(name); name.setFont(new Font("宋体",Font.BOLD,14)); p1.add(new JLabel("IP: ")); ip = new JTextField("127.0.0.1", 15); p1.add(ip); p1.add(new JLabel("Port: ")); port = new JTextField("8888", 4); p1.add(port); ss_server = new JButton("侦听"); ss_server.setForeground(new Color(150,100,250)); ss_server.setFont(new Font("宋体",Font.BOLD,14)); p1.add(ss_server); ss_client = new JButton("连接"); ss_client.setForeground(new Color(150,100,250)); ss_client.setFont(new Font("宋体",Font.BOLD,14)); p1.add(ss_client); ss_exit = new JButton("退出"); ss_exit.setForeground(new Color(150,100,250)); ss_exit.setFont(new Font("宋体",Font.BOLD,14)); p1.add(ss_exit); p2.setLayout(new BorderLayout()); p2.add(new JLabel("发送消息:"),BorderLayout.WEST); p2.setBackground(new Color(200,200,250)); send_text = new JTextField("在?"); p2.add(send_text, BorderLayout.CENTER); ss_send = new JButton("发送"); p2.add(ss_send, BorderLayout.EAST); ss_exit.addActionListener(this); send_text.addKeyListener(this); ss_server.addActionListener(this); ss_client.addActionListener(this); ss_send.addActionListener(this); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
import java.util.*; public class ChatRoom extends JFrame implements ActionListener, Runnable,KeyListener { Image Image; private TextArea ta; private JTextField ip; private JTextField port; private JButton ss_server; private JButton ss_client; private JTextField send_text; private JTextField name; private JButton ss_send; private JButton ss_exit; private Socket skt; public void keyReleased(KeyEvent f){} public void keyPressed(KeyEvent f){ if(f.getKeyCode()== KeyEvent.VK_ENTER){ try{ PrintWriter pw = new PrintWriter(skt.getOutputStream()); String s1=name.getText(); String s = send_text.getText(); if(s==null) return; Calendar ca= new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Calendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = new String(hh + ":" + mm + ":" + ss + " "); ta.append(time+s1+"说:"+"\n"+s+"\n"); String s3=time+s1+"说:"+"\n"+s; pw.println(s3); pw.flush(); send_text.setText(""); } catch(Exception e){
ta.append("发送失败!\n"); } } } public void keyTyped(KeyEvent f){} public void run() { try{ BufferedReader br = new InputStreamReader(skt.getInputStream())); while(true){ String s = br.readLine(); if(s==null) break; ta.append(s + "\n"); } } catch(Exception e){ e.printStackTrace(); } } public void actionPerformed(ActionEvent e) { if(e.getSource()==ss_server){ doServer(); } if(e.getSource()==ss_client){ doClient(); } if(e.getSource()==ss_send){ doSend(); } if(e.getSource()==ss_exit){ doexit(); } } public void doServer()
相关文档
最新文档