java编写的socket聊天程序(gui界面+登录)

java编写的socket聊天程序(gui界面+登录)
java编写的socket聊天程序(gui界面+登录)

package MyChatRoom;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import https://www.360docs.net/doc/635516147.html,.*;

import java.io.*;

//未解决:登录注册模块。聊天记录模块以及显示在线好友,有选择性的聊天模块public class MyChatRoom

{

public static void main(String Args [])

{

logFrame log=new logFrame();

}

}

//聊天模块

class MyFrame extends JFrame implements ActionListener

{

public MyFrame(int a,String ip)

{

//获取传来的参数

ipA=ip;

selectNum=a;

//基本设置

setTitle("Sun聊天小工具");

setSize(WIDTH,HEIGHT);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//创建3个面板,一个放文本框,一个放按钮,一个放图片

JPanel textpanel = new JPanel();

JPanel buttonPanel=new JPanel();

JPanel picPanel=new JPanel();

Container contentPane = getContentPane();

GridBagConstraints cc=new GridBagConstraints();

GridBagLayout ca=new GridBagLayout();

contentPane.setLayout(ca);

cc.fill=GridBagConstraints.BOTH;

//初始化一个容器

cc.gridwidth=1;

cc.gridheight=2;

contentPane.add(picPanel);

ca.setConstraints(picPanel,cc);

cc.weighty=0.0;

cc.gridwidth=GridBagConstraints.REMAINDER;

cc.gridheight=1;

cc.weighty=1.0;

contentPane.add(textpanel);

ca.setConstraints(textpanel,cc); contentPane.add(buttonPanel);

ca.setConstraints(buttonPanel,cc);

//网格式布局

GridBagConstraints c=new GridBagConstraints(); GridBagLayout gridbag=new GridBagLayout(); textpanel.setLayout(gridbag);

c.fill=GridBagConstraints.BOTH;

//初始化组件

//发送按钮

btSet=new JButton("发送");

buttonPanel.add(btSet);

btSet.addActionListener(this);

//取消按钮

btCancel=new JButton("取消"); buttonPanel.add(btCancel);

btCancel.addActionListener(this);

//清空按钮

btClear=new JButton("清屏");

buttonPanel.add(btClear);

btClear.addActionListener(this);

//显示消息框

c.weightx=1.0;

c.weighty=1.0;

c.gridwidth=GridBagConstraints.REMAINDER; getBox=new JTextArea(15,30);

getBox.setEditable(false);

myScro=new JScrollPane(getBox); textpanel.add(myScro);

gridbag.setConstraints(myScro,c);

//设置文本框显示数据往下翻页

getBox.setCaretPosition(getBox.getText().length());

//标签项

c.weightx=1.0;

c.gridwidth=GridBagConstraints.RELA TIVE;; label1=new JLabel("输入");

label4=new JLabel("聊天内容");

c.gridwidth=GridBagConstraints.REMAINDER; gridbag.setConstraints(label4,c);

textpanel.add(label1);

textpanel.add(label4);

//发送消息框

setBox=new JTextArea(7,30);

myScro2=new JScrollPane(setBox);

textpanel.add(myScro2);

gridbag.setConstraints(myScro2,c);

//菜单项

//主菜单

JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar);

gyMenu =new JMenu("关于(G)");

bzMenu =new JMenu("帮助(H)");

editMenu =new JMenu("编辑(E)");

szMenu =new JMenu("设置(S)");

menuBar.add(editMenu);

menuBar.add(gyMenu);

menuBar.add(bzMenu);

menuBar.add(szMenu);

//子菜单

aa =new JMenuItem("版权");

zzxx =new JMenuItem("作者信息");

gyMenu.add(aa);

gyMenu.add(zzxx);

aa.addActionListener(this);

zzxx.addActionListener(this);

cop=new JMenuItem("复制");

cut =new JMenuItem("剪切");

pas =new JMenuItem("粘贴");

editMenu.add(cop);

editMenu.add(cut);

editMenu.add(pas);

cop.addActionListener(this);

cut.addActionListener(this);

pas.addActionListener(this);

syzn=new JMenuItem("使用指南");

bzMenu.add(syzn);

syzn.addActionListener(this);

pifu=new JMenuItem("字体颜色");

beijing=new JMenuItem("背景色");

szMenu.add(pifu);

szMenu.add(beijing);

pifu.addActionListener(this);

beijing.addActionListener(this);

//匿名内部类实现监听

setBox.addKeyListener(new KeyAdapter()

{

public void keyPressed(KeyEvent e)

{

//当按回车时发送所输入的信息

if(e.getKeyCode()==KeyEvent.VK_ENTER)

{

sendString=setBox.getText();

out.println(sendString);

getBox.setCaretPosition(getBox.getText().length());

getBox.append("I Said:"+sendString+"\r\n");

setBox.setText("");

}

//当按Ctrl+回车时换行

/* if(e.getModifiers()==KeyEvent.VK_CONTROL&&

e.getKeyCode()==KeyEvent.VK_ENTER)

{

setBox.append("\r\n");

}*/

}

});

imgLabel1=new JLabel(new ImageIcon("./MyChatRoom/bb.jpg"));

picPanel.add(imgLabel1);

imgLabel2=new JLabel(new ImageIcon("./MyChatRoom/aa.jpg"));

picPanel.add(imgLabel2);

picPanel.setLayout(new GridLayout(2,1));

//显示窗口

setVisible(true);

//选择作为客户端还是服务器端

switch(selectNum)

{

case 0:

serverRole();

break;

case 1:

clientRole();

break;

}

//启动线程处理输入流

thread=new MyThread(connectSocket,getBox);

thread.setPriority(Thread.MIN_PRIORITY);

thread.start();

//包装输出流

try

{

out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(connectSocket.getOutputStream())),true);

}

catch(IOException e)

{

e.printStackTrace();

}

}

final int WIDTH=550;

final int HEIGHT=600;

JLabel label1,label4,imgLabel1,imgLabel2;

JButton btSet,btCancel,btClear;

JTextArea setBox,getBox;

JMenu gyMenu,bzMenu,editMenu,szMenu;

JMenuItem aa,cop,cut,pas,zzxx,syzn,pifu,beijing;

JScrollPane myScro,myScro2;

String sendString;

MyThread thread=null;

ServerSocket serverSocket;

Socket connectSocket;

String ipA;

PrintWriter out;

int selectNum;

//作为服务器端的处理

public void serverRole()

{

try

{

serverSocket=new ServerSocket(5500);

getBox.append("正在等待对话请求\n");

connectSocket=serverSocket.accept();

getBox.setText("连接来自"+connectSocket.getInetAddress().toString()+"\n");

}

catch(Exception e)

{

getBox.append("对不起,由于某些原因,不能创建服务器\n");

btSet.setEnabled(false);

}

}

//作为客户端的处理

public void clientRole()

{

try

{

connectSocket=new Socket(ipA,5500);

}

catch(Exception e)

{

getBox.append("对不起,无法连接!\r\n请重新登录并输入正确的IP地址");

btSet.setEnabled(false);

}

}

//按钮监听

public void actionPerformed(ActionEvent e)

{

Object o=e.getSource();

//发送按钮处理

if(o==btSet)

{

sendString=setBox.getText();

out.println(sendString);

getBox.setCaretPosition(getBox.getText().length());

getBox.append("I Said:"+sendString+"\r\n");

setBox.setText("");

}

//取消按钮处理

if(o==btCancel)

{

setBox.setText("");

}

//清空按钮处理

if(o==btClear)

{

getBox.setText("");

}

//复制处理

if(o==cop)

{

getBox.copy();

}

//剪切处理

if(o==cut)

{

getBox.cut();

}

//粘贴处理

if(o==pas)

{

setBox.paste();

}

if(o==zzxx)

{

JOptionPane.showMessageDialog(this,"作者:沈光辉,学号:20095392");

}

if(o==aa)

{

JOptionPane.showMessageDialog(this,"版权所有,盗版必究!");

}

if(o==syzn)

{

JOptionPane.showMessageDialog(this,"请等待消息框显示连接信息后再进行通信");

}

//打开调色板设置背景色

if(o==pifu)

{

Color color=JColorChooser.showDialog(this, "调色板", this.getBackground());

if(color!=null)

getBox.setForeground(color);

setBox.setForeground(color);

}

if(o==beijing)

{

Color color=JColorChooser.showDialog(this, "调色板", this.getBackground());

if(color!=null)

getBox.setBackground(color);

setBox.setBackground(color);

}

}

}

//线程类1,用来处理输入流数据显示

class MyThread extends Thread

{

BufferedReader in=null;

String inStr=null;

JTextArea getBox;

//用构造方法传入socket和文本域以作相应的处理

public MyThread(Socket soc,JTextArea a)

{

getBox=a;

try

{

in =new BufferedReader(new InputStreamReader(soc.getInputStream()));

}

catch(IOException e)

{

e.printStackTrace();

}

}

//run方法

public void run()

{

try

{

while(true)

{

inStr=in.readLine();

getBox.setCaretPosition(getBox.getText().length());

getBox.append("He said:"+inStr+"\r\n");

Thread.sleep(1000);

}

}

catch(Exception e)

{

e.printStackTrace();

}

}

}

//登录验证模块

class logFrame extends JFrame implements ActionListener

{

//构造方法

public logFrame()

{

//主面板

setTitle("用户登录");

setSize(400,270);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container cotn=getContentPane();

//添加面板

JPanel panel1=new JPanel();

JPanel panel2=new JPanel();

JPanel panel3=new JPanel();

JPanel panel4=new JPanel();

JPanel panel5=new JPanel();

JPanel panel6=new JPanel();

cotn.add(panel6);

cotn.add(panel1);

cotn.add(panel2);

cotn.add(panel4);

cotn.add(panel3);

cotn.add(panel5);

//网格式布局

cotn.setLayout(new GridLayout(6,1));

//添加组件

user=new JLabel("用户名");

pass=new JLabel("密码");

ipLabel=new JLabel("I P 地址"); userName=new JTextField(20);

passWord=new JPasswordField(20);

ipAdd=new JTextField("localhost",20); ipAdd.setEditable(false);

panel1.add(user);

panel1.add(userName);

panel2.add(pass);

panel2.add(passWord);

panel3.add(ipLabel);

panel3.add(ipAdd);

headLabel=new JLabel("用户登录");

panel6.add(headLabel);

//选择作为服务器端还是客户端

serverR=new JRadioButton("服务器端",true); clientR=new JRadioButton("客户端",false); myGroup=new ButtonGroup();

myGroup.add(serverR);

myGroup.add(clientR);

panel4.add(serverR);

panel4.add(clientR);

serverR.addActionListener(this);

clientR.addActionListener(this);

//登录按钮

btOk=new JButton("登录");

btCanc=new JButton("退出");

panel5.add(btOk);

panel5.add(btCanc);

btOk.addActionListener(this);

btCanc.addActionListener(this);

//菜单项

JMenuBar mainMenu=new JMenuBar(); setJMenuBar(mainMenu);

bz=new JMenu("帮助");

gy=new JMenu("关于");

mainMenu.add(gy);

mainMenu.add(bz);

bb=new JMenuItem("版本");

gy.add(bb);

bb.addActionListener(this);

gySun=new JMenuItem("关于Sun");

gy.add(gySun);

gySun.addActionListener(this);

syxz=new JMenuItem("使用指南");

bz.add(syxz);

syxz.addActionListener(this);

//为组件添加键盘事件监听

userName.addKeyListener(new logListener());

passWord.addKeyListener(new logListener());

ipAdd.addKeyListener(new logListener());

//显示窗口。最后才显示,防止面板有些元素不能正常显示。

setVisible(true);

}

JMenu bz,gy;

JMenuItem bb,gySun,syxz;

JTextField userName,ipAdd;

JPasswordField passWord;

JLabel user,pass,ipLabel,headLabel;

ButtonGroup myGroup;

JRadioButton serverR,clientR;

JButton btOk,btCanc;

//num选择的角色

public int num;

String ipAddress;

//内部类实现监听

class logListener extends KeyAdapter

{

public void keyPressed(KeyEvent e)

{

if(e.getKeyCode()==KeyEvent.VK_ENTER)

{

logTest();

}

}

}

//登录验证方法

public void logTest()

{

String s1=userName.getText().trim();

String s2=passWord.getText().trim();

String s3=ipAdd.getText().trim();

if(s1.equals("20095392")&&s2.equals("20095392"))

{

headLabel.setText("正在连接...");

ipAddress=ipAdd.getText().trim();

//创建线程,启动聊天窗口

logThread ca=new logThread(num,ipAddress);

//启动

ca.start();

//释放登录窗口资源

logFrame.this.dispose();

}

else

{

JOptionPane.showMessageDialog(this,"用户名不存在或密码错误!");

passWord.setText("");

}

}

//按钮事件实现

public void actionPerformed(ActionEvent e)

{

Object o=e.getSource();

//选择的是服务器端

if(o==serverR)

{

num=0;

ipAdd.setEditable(false);

}

//选择的是客户端

if(o==clientR)

{

num=1;

ipAdd.setEditable(true);

ipAdd.setCaretPosition(ipAdd.getText().length());

ipAdd.requestFocus(true);

}

//登录验证

if(o==btOk)

{

logTest();

}

//取消登录,退出系统

if(o==btCanc)

{

System.exit(0);

}

if(o==syxz)

{

JOptionPane.showMessageDialog(this,"请先选择本客户端的角色(服务器端或客户端)\r\n若选择客户端请输入所要连接的服务器端IP地址");

}

if(o==bb)

{

JOptionPane.showMessageDialog(this,"V ersion-1.0");

}

if(o==gySun)

{

JOptionPane.showMessageDialog(this,"作者-沈光辉学号-20095392");

}

}

}

//线程类2,用来启动聊天窗口模块

class logThread extends Thread

{

int num=0;

String ipA;

//run方法

public logThread(int n,String ip)

{

num=n;

ipA=ip;

}

public void run()

{

try

{

{

MyFrame a=new MyFrame(num,ipA);

Thread.sleep(1000);

}

}

catch(Exception e)

{

e.printStackTrace();

}

} }

JAVA代码编写一简单网络聊天程序

要求:聊天室服务器、聊天室客户端;客户端之间可以聊天。 因为我是初级选手,想借此程序分析学习java,所以代码最好多一点注释... 分数有限,望大家不吝赐教!!问题补充: 需要图形用户界面哦,最好用swing组件 服务器端:采用多线程,可以向客户广播:当前聊天室人数,客户名称列表,客户进入离开提示; 客户端:可以设定昵称,性别,客户间可以私聊 服务器端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.360docs.net/doc/635516147.html,.*; public class Server extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); ServerSocket server = null; Socket socket = null;BufferedReader instr =null;PrintWriter os=null ; //Construct the frame public Server() { jbInit(); } class MyThread extends Thread{//该线程负责接受数据 public void run(){ try{ while(true){ this.sleep(100); instr= new BufferedReader(new InputStreamReader(socket.getInputStream())); if(instr.ready()){ //检查是否有数据 jTextArea1.append("客户端: "+instr.readLine()+"\n"); } } }catch(Exception ex){} }

基于java socket的聊天室项目文档

北京邮电大学软件学院 2010-2011 学年第 1学期实训项目文档 (每个项目小组一份) 课程名称:全日制研究生实训 项目名称:通信软件实训 项目完成人: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 指导教师: 日期:2011年1月21日

基于java socket的聊天室实现 一 . 实训项目目的和要求(说明通过本项目希望达到的目的和要求) 目的:熟练掌握socket编程原理,并用java socket实现聊天室 要求:实现p2p和聊天室功能 二 . 实训项目开发环境(说明本项目需要的环境) 开发工具:Eclipse SDK Version: 3.5.2 和NetBeans 6.9.1 版本 系统:win7 三 . 实训项目内容(说明本项目的内容,如:问题分析、设计方案、算法、设计图等) 1.问题分析 网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台 主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协 议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一 地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的 或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要 关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务 器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。 客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运 行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户, 同时自己继续监听服务端口,使后来的客户也能及时得到服务。 两类传输协议:TCP;UDP。TCP是Tranfer Control Protocol的简称, 是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个 顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或 接收操作。

JAVA局域网聊天系统源代码

这是我自己做的简单聊天系统客户端 package LiaoTianSys; import java.awt.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import https://www.360docs.net/doc/635516147.html,.Socket; import https://www.360docs.net/doc/635516147.html,.UnknownHostException; public class ConversationFrame extends JFrame { JScrollPane jsp; JTextField jtf; static JTextArea jta; //JTextArea jat1,jta2; JButton enter=new JButton("发送"); JButton jb=new JButton("聊天室好友"); JButton jb2=new JButton("进入聊天室"); JButton jb3=new JButton("刷新在线人员列表"); JPanel jp,jp1,jp3,jp4; DefaultListModel listmodel = new DefaultListModel(); //static String[] NAME=new String[10]; String n[]={"f"}; JList list=new JList(listmodel); JLabel time=new JLabel("当前系统时间:"); JLabel showtime=new JLabel("显示时间"); JLabel jl=new JLabel("输聊天信息"); JLabel nicheng=new JLabel("昵称"); JTextField NCshuru=new JTextField(10); static DataOutputStream dos; static DataInputStream dis; //final LoginFrame lf; Socket socket; public ConversationFrame() { Container con=getContentPane(); con.setLayout(new BorderLayout()); jp=new JPanel(); setSize(700,600); setLocation(100,100); jta=new JTextArea(); jta.setEditable(false);

java简单聊天小程序

网络编程java简单聊天小程序[下次修改成多线程的,这个必须等待对方输入结束,有机会修改成可视化窗口] By 刘汪洋 写入正确的ip地址即可正常用当然目前只停留在命令行界面 还没有写成可视化窗口界面 运行时请带上参数 如java TransServer 张三 Java TransClient 李四 ( 和刘正南在局域网试验的截图成功 这是修改后的 加上了姓名! ) (修改前的截图)

代码: 客户端: package com.baidu.chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import https://www.360docs.net/doc/635516147.html,.Socket; import https://www.360docs.net/doc/635516147.html,.UnknownHostException; // 简单聊天小程序客户端 public class TransClient { public static void main(String[] args)

{ if(args[0]==null) args[0] = "他"; startClient(args[0]); } private static void startClient(String name) { Socket sk = null; BufferedReader bufr = null; try { sk = new Socket("127.0.0.1",10000);// 1 创建 socket服务 bufr = new BufferedReader(new InputStreamReader(System.in));// 2 获取录入键盘 PrintWriter out = new PrintWriter(sk.getOutputStream(),true);// 3 获取输出流true表示自动刷新 BufferedReader bufIn = new BufferedReader(new InputStreamReader(sk.getInputStream()));// 4 获取输入流 // 5 发送获取 String text_send = ""; String text_get = ""; String ServerName = ""; System.out.print("聊天已开启..."+"\r\n"+"我说:");

Java源代码___聊天室

Java 聊 天 室 制作人:_____杨永生_____ 制作时间:2012.9.26 目录 1本文简介 (2) 2聊天室截图与说明 (2) 2.1用Java编译: (2) 2.2服务器登录界面 (2) 2.3服务器窗口 (2) 2.4客服端登录界面 (3) 2.5客服端窗口 (3) 3服务器端 (6) 3.1MyServer()方法 (6) 3.2Login()方法 (10) 3.3Time()方法 (13) 4客户端 (14) 4.1MyClient()方法 (14) 4.2Login()方法 (18) 4.3Time()方法 (20)

1 本文简介 这是一个简单的Java聊天室,仅提供给一些刚学Java的学生做实验,本文也是仅供参考. 本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比如只能一条一条的发信息,不能连发,希望能解决本问题的朋友能给我发信息,我的QQ号就是百度号! 2 聊天室截图与说明 2.1 用Java编译: 本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看, 2.2 服务器登录界面 要先运行服务器端的程序 用户名:y 密码:1 用户名密码可以自己设定点击确定可以登录,2秒后到服务端界面 2.3 服务器窗口

聊天室的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后, 2.4 客服端登录界面 和服务器端的登录一样 2.5 客服端窗口

当登录上后客服端就显示已经连接了,此时服务器端的窗口如下

由于本程序设计的不是很完整,具体的聊天要先从客服端开始: 在客服端输入一条聊天内容后按确定,在服务器端就可以收到信息,之后客户端不能输入了,要等待服务器端来信息后才能继续输入信息. 想要结束聊天,直接可以关闭窗口,也可以输入’bye’后断开聊天

java版基于UDP协议网上聊天程序课程设计

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师李建设职称副教授 学生姓名专业班级网络工程学号 题目基于UDP协议网上聊天程序 成绩起止日期2013 年11 月25 日~2013 年12 月13 日 目录清单

5 6 课程设计任务书 2013 —2014学年第1 学期 学院(系、部)计算机与通信学院专业网络工程班级102 课程名称:网络工程学生姓名: 设计题目:基于UDP协议网上聊天程序指导教师:李建设 完成期限:自2013 年11 月25 日至2013 年12 月13 日共 3 周 容 及 任 务 一、设计内容 实现一个基于UDP协议的简单的聊天程序,包括服务器和客户端。 1.支持多人聊天。 2.客户端具有图形化用户界面。 二、设计任务 课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。 三、设计要求 1.按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。 2.课程设计所使用的编程语言任选,但建议使用C或C++; 3.绿色软件:程序运行不需安装,避免写系统和注册表; 进 度 安 排 起止日期工作内容 2013-11-25~2013-11-3 选题 2013-12-1~2013-12-3 系统分析和设计; 2013-12-4~2013-12-8 熟悉软件开发工具、编码系统、系统测试 2013-12-9~2013-12-13 撰写并提交课程设计说明书(含电子文档)、源程序等。

java编写的简单局域网聊天室(适合初学者).

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Panel; import java.awt.Point; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FileWriter; import java.io.IOException; import https://www.360docs.net/doc/635516147.html,.DatagramPacket; import https://www.360docs.net/doc/635516147.html,.DatagramSocket; import https://www.360docs.net/doc/635516147.html,.InetAddress; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class GUI_Chat extends Frame { private static final long serialVersionUID = 1L; private TextArea viewTextArea = new TextArea(20, 1; private TextArea sendTextArea = new TextArea(; private TextField ipTextField = new TextField(20; private Button sendButton = new Button(" 发送" ; private Button clearButton = new Button(" 清屏" ; private Button logButton = new Button(" 记录" ; private Button shakeButton = new Button(" 震动" ; private Panel panel = new Panel(; private DatagramSocket socket ;

基于JAVA局域网聊天程序设计与实现(附源代码)

局域网聊天课程设计 摘要 随着互联网的发展,网络聊天工具作为一种交流工具,已经受到网民的青睐。目前,出现了很多功能强大的聊天工具,其中应用比较广泛的有腾讯QQ、MSN-Messager等等。 即时通讯软件,是每一个上网用户都需要的工具,它除了能够让您迅速地在网上找到自己的朋友和伙伴之外,还可以实时交谈和传递信息,截止到目前,全球约有近3亿多人使用即时软件,正因为即时通讯软件拥有数以亿计的用户和增长的市场,所以各个公司都盯上了这个最大的市场,一时间,即时通讯市场硝烟四起。 对等网络(peer-to-peer,简称P2P),应用最初出现时和现在并不相同。事实上可以认为它是若干不同技术以及流行趋势相结合的产物。以下是导致P2P技术发展最重要的趋势:首先,一些新技术与软件工程的结合,形成了一种将工作分散的趋势。P2P计算正是这种分散工作趋势的结果。其次,在企业应用集成等因素的驱动下,过去十年渐渐形成从集中的单机系统转向分布式系统。然而随着互联网的发展,全面的分布式计算也就成为一种迫切需求。 关键词:局域网聊天 P2P java

Abstract With the development of the Internet,the chat tool as a communication tool, has been popularly accepted by netizens of all ages. At present, there are many powerful chat tools, of which Tencent QQ, MSN-Messager are much more prevalent. Instant messaging software is necessary for every one who connects to the internet, which can not only provide you a prompt way to find friends and partners online, but can provide you the convenience of internet relay chat and information delivering. Up to now, there are about 300 million people using real-time software all over the world. As more and more corporations have focused on this market with growing potential, which has hundreds of millions of uses, the competitions among these corporations are extremely fierce. The initial application of peer-to-peer network (peer-to-peer, referred to as P2P) is not the same as it is now. In fact, it can be regarded as a combination of different technologies and fashion trends. Below are the most important trends that have led the development of P2P technology: First of all, the integration of software engineering and new technologies led to a working dispersion trend. As a result, P2P computing was born. Then, in the past decade, it has turned fro m a single centralized system to distributed system due to the motivation of factors such as enterprise application integration. At last, with the development of the Internet, however, a comprehensive distributed computing has become an urgent need. Keywords:LAN chat P2P java

java课程设计聊天小程序

java课程设计聊天小程序

课程设计指导书 姓名学 号 班 级 一 班 课程名称Java课程设计课程性质 设计时间2010年11月4日——2010年12月31日设计名称聊天小程序 设计目的本次课程设计是对前面学过的面向对象的编程思想以及编程方法的一个总结、回顾和实践。开始设计前学生一定要先回顾以前所学的内容,明确本次设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JA V A的应用系统综合实例,来掌握Java语言编程技巧。 设计要求1、使用图形用户界面。 2、能实现一个聊天室中多人聊天。 3、可以两人私聊。

计划与进度计划在两个月内完成任务,首先在前半个月内(11月4日--11月19日),构思通过网上(图书馆)的知识与课本上的相关内容的了解与认识,确认好选择的课题与怎样设计,基本的思路想好。十五天(11月19日--12月5日)内参考资料争取完成服务端的程序,在12月5日--12月20日完成客户端的程序设计,在12月20日—12月30日内完成实现报告的填写工作。在12月31日全面完成整个课题,并上交给老师。 任课教师意见备注

课程设计报告 课程: 学号: 姓名: 班级 教师: 时间

计算机科学与技术 设计名称:聊天小程序日期:2010 年 11月 4 日 设计内容:设计一个在图形界面下,实现一个聊天室中多人聊天,也可以私聊的聊天小程序 设计目的与要求:目的是为了更好的掌握java 这门课程的内容,同时更好的理解与掌握socket 编程,对所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,掌握Java语言编程技巧。要求使用图形用户界面。能实现一个聊天室中多人聊天。可以两人私聊。(提示:使用socket通信)程序描述清晰准确,思路清晰,程序能够实现相应的功能。

若干个经典的Java小程序源代码

一个Java小程序源代码(反转字符串)//BorderLayoutTest.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; public class test1 { public static void main(String[] args) { cloneFrame frame = new cloneFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } class cloneFrame extends JFrame { public cloneFrame() {

setTitle("机试程序"); setSize(600, 400); JPanel buttonPanel = new JPanel(); buttonPanel.setBackground(new Color(56,43,85)); Button1 = new JButton("点击复制反转字符串"); Button1.addActionListener(new turnListener()); buttonPanel.add(Button1); JPanel textPanel = new JPanel(); textPanel.setBackground(new Color(100,100,100)); field1 = new JTextField("姓名:老孙;学号:2004132028", 20); field2 = new JTextField("反转", 20); field2.setEditable(false); textPanel.add(field1); textPanel.add(field2); JPanel tuPanel = new JPanel();

JAVA课程设计--简单的网络聊天程序

本科课程设计课程设计题目:简单的网络聊天程序

课程设计报告1.设计目的:

序言 1.1 背景 在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。 此次课程设计的题目为简单的聊天室,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 1.2 相关技术 CPU:Pentium 2.8GHz以上 内存:256MB以上 硬盘空间:80G以上 操作系统:Windows7 运行环境:eclips

2. 程序设计与实现 2.1需求分析 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。Java去掉了C++语言的许多功能,如:指针运算、结构、typedefs、#define,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。本次课程设计做的是Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)启动客户端:实现网络的链接,可以进行正式的聊天 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。

聊天程序java

目录 前言 ............................................................................................................................................. - 1 - 工程概况...................................................................................................................................... - 1 - 正文 ............................................................................................................................................. - 1 - 2.1课程任务及要求.................................................................................................................... - 1 - 2.2选题意义................................................................................................................................ - 2 - 2.3 程序需求分析....................................................................................................................... - 2 - 2.3.1可行性分析......................................................................................................................... - 2 - 2.3.2 服务器端............................................................................................................................ - 2 - 2.3.3 客户端................................................................................................................................ - 3 - 2.4 算法设计............................................................................................................................... - 3 - 2.4.1 UML图如下:................................................................................................................... - 3 - 2.4.2 C/S模式套接字的连接...................................................................................................... - 4 - 2.4.3 文字聊天的实现.............................................................................................................. - 4 - 2.5 程序设计与实现................................................................................................................... - 5 - 2.5.1建立连接............................................................................................................................. - 5 - 2.5.2断开连接........................................................................................................................... - 5 - 2.5.3 C/S模式套接字的连接................................................................................................... - 6 - 2.6程序测试与分析.................................................................................................................... - 8 - 2.6.1启动服务器......................................................................................................................... - 8 - 2.6.2启动客户端......................................................................................................................... - 8 - 2.6.3成功启动客户端................................................................................................................. - 8 - 2.6.4聊天过程............................................................................................................................. - 9 - 2.6.5 断开连接............................................................................................................................ - 9 - 2.7课程设计小结...................................................................................................................... - 10 - 参考文献.................................................................................................................................... - 10 - 课程设计总结............................................................................................................................ - 11 - 致谢 ........................................................................................................................................... - 12 - 附录 ........................................................................................................................................... - 13 -

java聊天工具源代码.doc

v1.0可编辑可修改 源代码 项目 QQClientProject: LoguiGui 代码 : package class LoguiGui extends { public LoguiGui() { initComponents(); } public Socket connectServer() { Socket s = null; try { s = new Socket("", 6666); } catch (Exception e) { (); } return s; } private void jButton1ActionPerformed evt) { quals(name)) { (this, "用户名不能为空, 请输入 ", "异常提示", ; return; } String pwd = new String()); "密码: " + pwd); if () == 0) {

v1.0可编辑可修改 (this, "密码不能为空,请输入", "异常提示", ; return; } final Socket s = (); endMsg(msg, s); eceiveMsg(s); etVisible(true); } }); (); } else { (this, "登录失败:" + r, "异常提示", ; } private void jLabel3MouseClicked evt) { etVisible(true); } }); } RegiterGui代码: package class RegiterGui extends { private static final String url = "jdbc:odbc:mydata"; private static final String user = "mzz";

利用JAVA实现简单聊天室

利用JAVA实现简单聊天室 1.设计思路 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。而且,Java 很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。 2.设计方法 在设计简单聊天室时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。 3 程序功能图及程序相关说明 (1)主功能框图

(2) 聊天室基本功能表 4.程序代码是说明 程序中引入的包: package Chat; import https://www.360docs.net/doc/635516147.html,.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*;

import java.io.*; (1)服务器端代码中用户自定义类: 类名:Server 作用:服务器启动 继承的接口名:ActionListener public class Server implements ActionListener{ 定义的对象: count //记录点机关闭按钮次数2次关闭 soconly //只有SOCKET,用于群发 sockets//所有客户的SOCKET socket_thread //Socket所在的线乘,用于退出;frame // 定义主窗体 panel //定义面板 start,stop //启动和停止按钮 主要成员方法: public void center //定义小程序查看器的位置 public void actionPerformed //定义处理异常机制 定义子类:serverRun,Details 继承的父类名:Thread class serverRun extends Thread //启线乘用于接收连入的Socket class Details extends Thread //具体处理消息的线乘,只管发送消息创建一个ServerSocket 对象,用于接受指定端口客户端的信息 ServerSocket server = new ServerSocket("1234"); 接受请求时候,通过accept()方法,得到一个socket对象。 Socket socket = server.accept(); 通过socket创建流(输入,输出)。 BufferedReaderbr=newBufferedReader(newInputStreamReader (socket.getInputStream())) DataInputStream dis = new DataInputStream(socket.getInputStream());

Java Socket实现多人聊天室

Java Socket实现多人聊天室---swing做UI 标签:socket聊天javaexception服务器string 2011-08-31 15:06 20679人阅读评论(25) 收藏举报 分类: java(21) 版权声明:本文为博主原创文章,未经博主允许不得转载。 今天翻硬盘的workspace发现一个Java Socket实现多人聊天室的源码,不记得是什么时候的事情了,貌似不是我写的。但写得还不错, 至少算个有模有样的聊天室工具。我简单的修改了一下,拿出来跟大家分享一下,仅供参考。。。 界面是用swing写的,还不懒,简约大方。有图有真相:

正如上图所示,这个程序分为服务器端和客户端,说白了就是两个main class,用eclipse 直接运行之。。。。。 聊天室的设计思想是:在局域网下,利用socket进行连接通信,当服务器端启动的时候,利用Thread线程不停的等待客户端的链接;当有客户端开启连 接的时候,服务器端通过IO流反馈“上线用户”信息给客户端,客户端也使用线程不停的接收服务器的信息,从而实现多人在线聊天功能。 程序中有三个类,分别Server.java(服务器端)、Client(客户端)、User.java(javabean)。代码如下: Server.java(服务器端): [html]view plaincopy 1.import java.awt.BorderLayout; 2.import java.awt.Color; 3.import java.awt.GridLayout; 4.import java.awt.Toolkit; 5.import java.awt.event.ActionEvent;

相关文档
最新文档