java最简单聊天代码 java简单聊天程序代码

谁可以给我一个Java设计的最最最最最简单的有服务端和客户端的聊天程序

这个是UDP写的

辰溪网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联公司于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

这个是客户端

import java.awt.event.*;

import java.net.*;

import javax.swing.*;

public class UDPClientDemo extends JFrame{

String host="localhost"; //服务器地址

int port=2345; //端口号

public UDPClientDemo(){

try{

DatagramSocket socket=new DatagramSocket(); //实例化一个数据报Socket

InetAddress address=InetAddress.getByName(host); //服务器地址

byte[] buffer=new byte[256]; //缓冲区

DatagramPacket packet=new DatagramPacket(buffer,buffer.length,address,port); //实例化一个数据报

socket.send(packet); //发送报文

packet=new DatagramPacket(buffer,buffer.length);

socket.receive(packet); //接受回应

String message=new String(packet.getData()); //得到报文信息

System.out.println("Received from: "+packet.getAddress()); //显示信息源地址

System.out.println(message); //显示服务器返回信息

socket.close(); //关闭端口

}

catch (Exception ex){

ex.printStackTrace(); //输出出错信息

}

}

public static void main(String[] args){

new UDPClientDemo();

}

}

这个是服务器

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import javax.swing.*;

public class UDPServerDemo extends JFrame{

int port=2345; //端口号

public UDPServerDemo(){

try{

byte[] buffer=new byte[256]; //缓冲区数组

DatagramSocket socket=new DatagramSocket(port); //实例化数据报Socket

DatagramPacket packet;

System.out.println("Server start..."); //输出运行信息

while (true){

packet=new DatagramPacket(buffer,buffer.length); //实例化数据报

socket.receive(packet); //接受请求

InetAddress target=packet.getAddress();

System.out.println("Received from"+target); //输出请求地址

int port=packet.getPort(); //得到接收端口

byte[] message="This is server,Who are you?".getBytes(); //服务器返回信息

packet=new DatagramPacket(message,message.length,target,port); //实例化数据报

socket.send(packet); //发送数据报

}

}

catch (Exception ex){

ex.printStackTrace(); //输出出错信息

}

}

public static void main(String[] args){

new UDPServerDemo();

}

}

这个其实还可以简化 做成最简单的 但是这个两个代码里面你可以学习到很多知识 很经典的代码

急求一个JAVA编写的局域网聊天代码?不要求很复杂。只要可以在两台机子上简单的对话就可以。

//以下引入包

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import java.applet.*;

public class regit extends JApplet implements ActionListener,ItemListener//接口

{

String s=null;

//对象的声明

JLabel labelname,labelpass,labelsxe,labeladdress,labelmail,labelphone;//标签

JTextField textname,textaddress,textmail,textphone;//文本框

JRadioButton r1,r2;//单选按纽

ButtonGroup bg;//组

JPasswordField textpass;//密码域

JButton buttonregit,buttonreset;//注册按纽 重写按纽

JPanel p;//面板

String sex;//定义性别字符串

URL url;//统一资源定位

BufferedWriter out1,out2;//流

BufferedReader in;

//布局方式

GridBagLayout gbl;

GridBagConstraints gc;

AppletContext co;//接口

//初始化

public void init()

{

//new 对象

labelname=new JLabel("用 户 名:");

labelpass=new JLabel("用户密码:");

labelsxe=new JLabel("性别:");

labeladdress=new JLabel("地址:");

labelmail=new JLabel("电子邮件:");

labelphone=new JLabel("联系电话:");

textname=new JTextField(15); textname.setForeground(Color.red);

textname.setToolTipText("请在这输入你的用户名");

textaddress=new JTextField(15);textaddress.setForeground(Color.red);

textaddress.setToolTipText("请在这输入你的地址");

textmail=new JTextField(15); textmail.setForeground(Color.red);

textmail.setToolTipText("请在这里输入你的E-mail地址");

textphone=new JTextField(15); textphone.setForeground(Color.red);

textphone.setToolTipText("请在这输入你的电话号码");

r1=new JRadioButton("男"); r1.setBackground(new Color(47,177,210));//设置颜色

r2=new JRadioButton("女"); r2.setBackground(new Color(47,177,210));//设置颜色

bg=new ButtonGroup();

bg.add(r1);bg.add(r2);//加入组,实现单选

textpass=new JPasswordField(15);

textpass.setToolTipText("在这里输入密码");

textpass.setForeground(Color.red);

buttonregit=new JButton("注册"); buttonregit.setBackground(new Color(47,177,210));//设置颜色

buttonregit.setToolTipText("点击按纽完成注册");

buttonreset=new JButton("填写"); buttonreset.setBackground(new Color(47,177,210));//设置颜色

buttonreset.setToolTipText("点击按纽刷新重写");

gbl=new GridBagLayout(); ///////////////////////////////////////

gc=new GridBagConstraints(); //////采用GridBagLayout布局方式////////

p=new JPanel();

p.setLayout(gbl);

p.setBackground(new Color(47,177,210));

this.getContentPane().add(p);//加入面板

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=2;

gbl.setConstraints(labelname,gc);

p.add(labelname);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=2;

gbl.setConstraints(textname,gc);

p.add(textname);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=4;

gbl.setConstraints(labelpass,gc);

p.add(labelpass);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=4;

gbl.setConstraints(textpass,gc);

p.add(textpass);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=6;

gbl.setConstraints(labelsxe,gc);

p.add(labelsxe);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=6;

gbl.setConstraints(r1,gc);

p.add(r1);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=5;

gc.gridy=6;

gbl.setConstraints(r2,gc);

p.add(r2);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=8;

gbl.setConstraints(labeladdress,gc);

p.add(labeladdress);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=8;

gbl.setConstraints(textaddress,gc);

p.add(textaddress);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=10;

gbl.setConstraints(labelmail,gc);

p.add(labelmail);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=10;

gbl.setConstraints(textmail,gc);

p.add(textmail);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=12;

gbl.setConstraints(labelphone,gc);

p.add(labelphone);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=12;

gbl.setConstraints(textphone,gc);

p.add(textphone);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=2;

gc.gridy=16;

gbl.setConstraints(buttonregit,gc);

p.add(buttonregit);

gc.anchor=GridBagConstraints.NORTHWEST;

gc.gridx=4;

gc.gridy=16;

gbl.setConstraints(buttonreset,gc);

p.add(buttonreset);

/////////////////////////////////////////////

co=this.getAppletContext();

/////////////////////////////////////////////

buttonregit.addActionListener(this);//按纽事件的监听

buttonreset.addActionListener(this);//按纽事件的监听

r1.addItemListener(this);//选择事件的监听

r2.addItemListener(this);//选择事件的监听

textphone.addActionListener(this);

}

public void actionPerformed(ActionEvent e)

{

//注册按纽事件

if(e.getSource()==buttonregit)

{

String s1=textname.getText(); ////////////////////

String s2=new String(textpass.getPassword());////////////////////

String s3=textaddress.getText(); // 定义字符串 //

String s4=textmail.getText(); ////////////////////

String s5=textphone.getText(); ////////////////////

//判断注册资料 信息 是否为空

if(s1.length()==0 || s2.length()==0 ||s3.length()==0 ||s4.length()==0 ||s5.length()==0)

{

int error=JOptionPane.INFORMATION_MESSAGE;

JOptionPane.showMessageDialog(null,"资料不能为空,请重新注册!","【温馨提示】",error);

return;//弹出对话框并返回

}

try//写入到txt文件

{

in=new BufferedReader(new FileReader("d:\\迷离视线聊天室\\password.txt"));

}

catch(Exception ee){}

String ss=s1;

try

{

while((s=in.readLine())!=null)

{

if(s.startsWith(ss))

{

JOptionPane.showMessageDialog(null,"用户名已经存在,请更换名字!");

textname.setText("");//设置为空,重新输入

textpass.setText("");

textaddress.setText("");

textmail.setText("");

textphone.setText("");

return;

}

}

}

catch(Exception ee){}

///////////////////////////以上代码判断是否有同名

{

try

{

out1=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\password.txt",true));

out2=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\message.txt",true));

}//创建文件

catch(Exception ee)

{}

try

{

out1.write(s1+"#"+s2);//写

out1.newLine();

out2.write("用户名:"+s1);

out2.newLine();

out2.write("密码:"+s2);

out2.newLine();

out2.write("性别:"+sex);

out2.newLine();

out2.write("地址:"+s3);

out2.newLine();

out2.write("电子邮件:"+s4);

out2.newLine();

out2.write("电话:"+s5);

out2.newLine();

out1.flush();

out2.flush();//清理缓冲

out1.close();

out2.close();

}

catch(Exception ee)

{}

JOptionPane.showMessageDialog(null,"注册成功!");

try

{

String qss="";

url=new url(/qss);//连接上网址

co.showDocument(url);

}

catch(Exception exx)

{}

}

}

//////////////////////以下为回车事件

if(e.getSource()==textphone)

{

String s1=textname.getText(); ////////////////////

String s2=new String(textpass.getPassword());////////////////////

String s3=textaddress.getText(); // 定义字符串 //

String s4=textmail.getText(); ////////////////////

String s5=textphone.getText(); ////////////////////

//判断注册资料 信息 是否为空

if(s1.length()==0 || s2.length()==0 ||s3.length()==0 ||s4.length()==0 ||s5.length()==0)

{

int error=JOptionPane.INFORMATION_MESSAGE;

JOptionPane.showMessageDialog(null,"资料不能为空,请重新注册!","【温馨提示】",error);

return;//弹出对话框并返回

}

try//写入到txt文件

{

in=new BufferedReader(new FileReader("d:\\迷离视线聊天室\\password.txt"));

}

catch(Exception ee){}

String ss=s1;

try

{

while((s=in.readLine())!=null)

{

if(s.startsWith(ss))

{

JOptionPane.showMessageDialog(null,"用户名已经存在,请更换名字!");

textname.setText("");//设置为空,重新输入

textpass.setText("");

textaddress.setText("");

textmail.setText("");

textphone.setText("");

return;

}

}

}

catch(Exception ee){}

///////////////////////////以上代码判断是否有同名

{

try

{

out1=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\password.txt",true));

out2=new BufferedWriter(new FileWriter("d:\\迷离视线聊天室\\message.txt",true));

}//创建文件

catch(Exception ee)

{}

try

{

out1.write(s1+"#"+s2);//写

out1.newLine();

out2.write("用户名:"+s1+"密码:"+s2+"性别:"+sex+"地址:"+s3+"电子邮件:"+s4+"电话:"+s5);//写

out2.newLine();

out1.flush();

out2.flush();//清理缓冲

out1.close();

out2.close();

}

catch(Exception ee)

{}

JOptionPane.showMessageDialog(null,"注册成功!");

try

{

String qss="";

url=new url(/qss);//连接上网址

co.showDocument(url);

}

catch(Exception exx)

{}

}

}

if(e.getSource()==buttonreset)//刷新重写事件

{

textname.setText("");

textpass.setText("");

textaddress.setText("");

textmail.setText("");

textphone.setText("");

}

}

//////////////////////////////////////////

//

public void itemStateChanged(ItemEvent ex)

{

if(ex.getSource()==r1)

{

sex=new String("男");

}

else if(ex.getSource()==r2)

{

sex=new String("女");

}

}

}

参考资料:试试看,刚在网上找的

用JAVA 编写简单网络聊天程序

/**

* 基于UDP协议的聊天程序

*

* 2007.9.18

* */

//导入包

import java.awt.*;

import java.awt.event.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

import java.net.*;

public class Chat extends JFrame implements ActionListener

{

//广播地址或者对方的地址

public static final String sendIP = "172.18.8.255";

//发送端口9527

public static final int sendPort = 9527;

JPanel p = new JPanel();

List lst = new List(); //消息显示

JTextField txtIP = new JTextField(18); //填写IP地址

JTextField txtMSG = new JTextField(20); //填写发送消息

JLabel lblIP = new JLabel("IP地址:");

JLabel lblMSG = new JLabel("消息:");

JButton btnSend = new JButton("发送");

byte [] buf;

//定义DatagramSocket的对象必须进行异常处理

//发送和接收数据报包的套接字

DatagramSocket ds = null;

//=============构造函数=====================

public Chat()

{

CreateInterFace();

//注册消息框监听器

txtMSG.addActionListener(this);

btnSend.addActionListener(this);

try

{

//端口:9527

ds =new DatagramSocket(sendPort);

}

catch(Exception ex)

{

ex.printStackTrace();

}

//============接受消息============

//匿名类

new Thread(new Runnable()

{

public void run()

{

byte buf[] = new byte[1024];

//表示接受数据报包

while(true)

{

try

{

DatagramPacket dp = new DatagramPacket(buf,1024,InetAddress.getByName(txtIP.getText()),sendPort);

ds.receive(dp);

lst.add("【消息来自】◆" + dp.getAddress().getHostAddress() + "◆"+"【说】:" + new String (buf,0,dp.getLength()) /*+ dp.getPort()*/,0);

}

catch(Exception e)

{

if(ds.isClosed())

{

e.printStackTrace();

}

}

}

}

}).start();

//关闭窗体事件

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent w)

{

System.out.println("test");

int n=JOptionPane.showConfirmDialog(null,"是否要退出?","退出",JOptionPane.YES_NO_OPTION);

if(n==JOptionPane.YES_OPTION)

{

dispose();

System.exit(0);

ds.close();//关闭ds对象//关闭数据报套接字

}

}

});

}

//界面设计布局

public void CreateInterFace()

{

this.add(lst,BorderLayout.CENTER);

this.add(p,BorderLayout.SOUTH);

p.add(lblIP);

p.add(txtIP);

p.add(lblMSG);

p.add(txtMSG);

p.add(btnSend);

txtIP.setText(sendIP);

//背景颜色

lst.setBackground(Color.yellow);

//JAVA默认风格

this.setUndecorated(true);

this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

this.setSize(600,500);

this.setTitle("〓聊天室〓");

this.setResizable(false);//不能改变窗体大小

this.setLocationRelativeTo(null);//窗体居中

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

this.setVisible(true);

txtMSG.requestFocus();//消息框得到焦点

}

//===============================Main函数===============================

public static void main(String[]args)

{

new Chat();

}

//================================发送消息===============================

//消息框回车发送消息事件

public void actionPerformed(ActionEvent e)

{

//得到文本内容

buf = txtMSG.getText().getBytes();

//判断消息框是否为空

if (txtMSG.getText().length()==0)

{

JOptionPane.showMessageDialog(null,"发送消息不能为空","提示",JOptionPane.WARNING_MESSAGE);

}

else{

try

{

InetAddress address = InetAddress.getByName(sendIP);

DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(txtIP.getText()),sendPort);

ds.send(dp);

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

txtMSG.setText("");//清空消息框

//点发送按钮发送消息事件

if(e.getSource()==btnSend)

{

buf = txtMSG.getText().getBytes();

try

{

DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(txtIP.getText()),sendPort);

}

catch(Exception ex)

{

ex.printStackTrace();

}

txtMSG.setText("");//清空消息框

txtMSG.requestFocus();

}

}

}

大家有没有基于一对一聊天的最简单的java聊天代码

先运行服务端 再运行客户端   就能对话了

服务端

package Liaotian;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

public class fwjiemian extends Frame implements ActionListener{

JTextArea lt;

TextField sr;

Button fs;

Panel xia;

ServerSocket ss;

Socket s;

BufferedReader br;

PrintWriter pw;

BufferedReader in;

public fwjiemian(){

lt=new JTextArea();

lt.setLineWrap(true);

sr=new TextField();

fs=new Button("发送");

xia=new Panel(new GridLayout(1,2)); 

xia.add(sr);

xia.add(fs);

this.add(lt);

this.add(xia,BorderLayout.SOUTH);

this.setResizable(false);

this.setSize(400, 500);

this.setLocation(350, 100);

this.setTitle("服务器");

this.setVisible(true);

fs.addActionListener(this);

//创建客户端+接受消息

try {

lt.setFont(new   java.awt.Font("宋体",0,15));   

ss=new ServerSocket(8888);

lt.append("服务器已启动,等待客户端接入..."+"\n"+"\n");

s=ss.accept();

lt.append("客户端已接入..."+"\n"+"\n");

while(true){

//获取时间

SimpleDateFormat sm=new SimpleDateFormat("HH:mm:ss");

System.out.println(sm.format(new Date()));

//接受消息

br=new BufferedReader(new InputStreamReader(s.getInputStream()));

String info=br.readLine();

lt.append("☆ 客户端:"+info+"    "+sm.format(new Date())+"\n"+"\n");

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

new fwjiemian();

}

@Override

public void actionPerformed(ActionEvent e) {

if(e.getSource()==fs){

try {

//获取时间

SimpleDateFormat sm=new SimpleDateFormat("HH:mm:ss");

System.out.println(sm.format(new Date()));

//发送消息

String infotokehu=sr.getText();

pw=new PrintWriter(s.getOutputStream(),true);

pw.println(infotokehu);

lt.setFont(new   java.awt.Font("宋体",0,15));   

lt.append("★ 服务器:"+infotokehu+"    "+sm.format(new Date())+"\n"+"\n");

sr.setText("");

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

客户端

package Liaotian;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

public class khjiemian extends Frame implements ActionListener{

JTextArea lt;

TextField sr;

Button fs;

Panel xia;

Socket s;

PrintWriter pw;

BufferedReader br;

BufferedReader in;

public khjiemian(){

lt=new JTextArea();

lt.setLineWrap(true); 

sr=new TextField();

fs=new Button("发送");

xia=new Panel(new GridLayout(1,2)); 

xia.add(sr);

xia.add(fs);

this.add(lt);

this.add(xia,BorderLayout.SOUTH);

this.setResizable(false);

this.setSize(400, 500);

this.setLocation(800, 100);

this.setTitle("服务器");

this.setVisible(true);

fs.addActionListener(this);

//创建客户端+接受消息

try {

lt.setFont(new   java.awt.Font("宋体",0,15));   

s=new Socket("127.0.0.1",8888);

lt.append("客户端已启动,等待接入服务器..."+"\n"+"\n");

lt.append("已接入服务器..."+"\n"+"\n");

while(true){

//获取时间

SimpleDateFormat sm=new SimpleDateFormat("HH:mm:ss");

System.out.println(sm.format(new Date()));

//接受消息

br=new BufferedReader(new InputStreamReader(s.getInputStream()));

String info=br.readLine();

lt.append("★ 服务器:"+info+"    "+sm.format(new Date())+"\n"+"\n");

}

} catch (Exception e) {

e.printStackTrace();

}

public static void main(String[] args) {

new khjiemian();

}

public void actionPerformed(ActionEvent w) {

if(w.getSource()==fs){

try {

//获取时间

SimpleDateFormat sm=new SimpleDateFormat("HH:mm:ss");

System.out.println(sm.format(new Date()));

//发消息

String infotofuwu=sr.getText();

pw=new PrintWriter(s.getOutputStream(),true);

pw.println(infotofuwu);

lt.setFont(new   java.awt.Font("宋体",0,15));   

lt.append("☆ 客户端:"+infotofuwu+"    "+sm.format(new Date())+"\n"+"\n");

sr.setText("");

}

 catch (Exception e) {

e.printStackTrace();

}

}

}


网站标题:java最简单聊天代码 java简单聊天程序代码
网页地址:http://scyanting.com/article/doipodh.html