网站首页 > 文章中心 > 其它

java简单聊天室源代码

作者:小编 更新时间:2023-11-23 12:38:27 浏览量:214人看过

急求一个关于UDP的JAVA实现多人聊天源代码

import java.io.InputStream;

import java.io.DataInputStream;

java简单聊天室源代码-图1

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.DataOutputStream;

import java.io.BufferedReader;

import java.net.ServerSocket;

import java.net.Socket;

import java.io.IOException;

import java.util.Date;

java简单聊天室源代码-图2

class Server

{

public Server()

try

Socket ss=s.accept();

OutputStream out=ss.getOutputStream();

DataOutputStream dout=new DataOutputStream(out);

InputStream in=ss.getInputStream();

DataInputStream din=new DataInputStream(in);

System.out.print(din.readUTF()+"!");

dout.writeUTF("你已经连接到服务器"+"\t"+"你的地址:"+ss.getInetAddress()+"\t"

+"你的链接端口:"+ss.getLocalPort()+"\n");

new ReadMessage(din).start();

new SendMessage(dout).start();

}

catch (IOException e)

e.printStackTrace();

public static void main(String[] args)

new Server();

class ReadMessage extends Thread

private DataInputStream din;

public ReadMessage(DataInputStream din)

this.din=din;

public void run()

String str;

while (true)

str=din.readUTF();

if (str.equals("bye"))

break;

// 发出服务器信息

class SendMessage extends Thread

private DataOutputStream dout;

public SendMessage(DataOutputStream dout)

this.dout=dout;

InputStreamReader inr=new InputStreamReader(System.in);

BufferedReader buf=new BufferedReader(inr);

while(true)

str=buf.readLine();

dout.writeUTF(str);

System.out.println("服务器退出!");

System.exit(1);

class Client

public Client()

InputStream in=s.getInputStream();

OutputStream out=s.getOutputStream();

System.out.println(din.readUTF());

new Thread(new SenderMessage(dout)).start();

new Thread(new ReaderMessage(din)).start();

new Client();

class ReaderMessage implements Runnable

public ReaderMessage(DataInputStream din)

System.out.println(new Date().toLocaleString()+"服务器说:"+str);

System.out.println("服务器已经关闭,此程序自动退出!");

class SenderMessage implements Runnable

public SenderMessage(DataOutputStream dout)

InputStreamReader inf=new InputStreamReader(System.in);

BufferedReader buf=new BufferedReader(inf);

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

/**

* 基于UDP协议的聊天程序

*

* */

//导入包

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

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

JPanel p = new JPanel();

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

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);

ds =new DatagramSocket(sendPort);

catch(Exception ex)

ex.printStackTrace();

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

//匿名类

new Thread(new Runnable()

//表示接受数据报包

ds.receive(dp);

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

catch(Exception e)

if(ds.isClosed())

}).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.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{

InetAddress address = InetAddress.getByName(sendIP);

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

ds.send(dp);

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

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

if(e.getSource()==btnSend)

txtMSG.requestFocus();

java 聊天室代码?

前天帮人解决过,代码如下:public class iChat extends JFrame {

private JPanel jContentPane;

private JButton jButton1;

private JScrollPane jScrollPane1;

super();

initialize();

} private void initialize() {

jTextArea1 = getJTextArea1();

this.setContentPane(getJContentPane());

this.setTitle("聊天室");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private JPanel getJContentPane() {

if (jContentPane == null) {

jContentPane = new JPanel();

jContentPane.setBackground(Color.BLUE);//蓝色为JPanel .

jContentPane.setLayout(null);

jContentPane.add(getJButton1(), null);

jContentPane.add(getJScrollPane1(), null);

return jContentPane;

public void keyTyped(java.awt.event.KeyEvent e) {

if (e.getKeyChar() == KeyEvent.VK_ENTER) {

String date = new SimpleDateFormat(

"yyyy-MM-dd HH:mm:ss").format(Calendar

.getInstance().getTime());

jTextArea1.append(date + "\n");

jTextArea1.append(s);

} private JButton getJButton1() {

if (jButton1 == null) {

jButton1 = new JButton();

jButton1.setText("发送");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent e) {

String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

.format(Calendar.getInstance().getTime());

jTextArea1.append(s + "\n");

return jButton1;

private JScrollPane getJScrollPane1() {

if (jScrollPane1 == null) {

jScrollPane1 = new JScrollPane();

jScrollPane1.setViewportView(getJTextArea1());

return jScrollPane1;

} private JTextArea getJTextArea1() {

if (jTextArea1 == null) {

jTextArea1 = new JTextArea();

jTextArea1.setEditable(false);

jTextArea1.setLineWrap(true);

return jTextArea1;

} public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

iChat thisClass = new iChat();

thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

thisClass.setVisible(true);

}}

java简易聊天室

你要的就是点对点通信,见以下例子:

①简单服务器端

/*

import java.io.*;

*/

ServerSocket server=null;

try {

server=new ServerSocket(%%1);

}catch(Exception e){

System.out.println("不能监听:"+e.toString());

Socket socket=null;

socket=server.accept();

java简单聊天室源代码-图3

catch(IOException e){

System.out.println("出错:"+e.toString());

}finally{

if(socket!=null){

socket.close();

server.close();

finally{

//import java.net.*;

String strIP = null;

strIP =InetAddress.getLocalHost().getHostAddress().toString();

catch(UnknownHostException e)

%%1=InetAddress.getLocalHost().getHostAddress();

EnumerationNetworkInterface netInterfaces = null;

netInterfaces = NetworkInterface.getNetworkInterfaces();

while (netInterfaces.hasMoreElements()) {

NetworkInterface ni = netInterfaces.nextElement();

System.out.println("DisplayName:" + ni.getDisplayName());

System.out.println("Name:" + ni.getName());

EnumerationInetAddress ips = ni.getInetAddresses();

while (ips.hasMoreElements()) {

System.out.println("IP:"

+ ips.nextElement().getHostAddress());

} catch (Exception e) {

@Override

ServerSocket server = null;

System.out.println("不能监听:" + e.toString());

Socket socket = null;

socket = server.accept();

BufferedReader req = new BufferedReader(new InputStreamReader(

socket.getInputStream()));

PrintWriter os = new PrintWriter(socket.getOutputStream());

Debug.p(req.readLine());

os.println("Server");

os.flush();

os.close();

req.close();

} catch (IOException e) {

System.out.println("出错:" + e.toString());

} finally {

if (socket != null) {

t.start();

strIP = InetAddress.getLocalHost().getHostAddress().toString();

} catch (UnknownHostException e) {

PrintWriter pw = new PrintWriter(socket.getOutputStream());

BufferedReader br = new BufferedReader(new InputStreamReader(socket

.getInputStream()));

pw.println("Client");

pw.flush();

Debug.p(br.readLine());

pw.close();

br.close();

求java网络聊天室(B/S模式)程序代码

共四个java文件,源代码如下:

import java.util.Hashtable;

public class ChatArea extends Panel implements ActionListener,Runnable

Socket socket=null;

DataInputStream in=null;

DataOutputStream out=null;

Thread threadMessage=null;

TextArea 谈话显示区,私聊显示区=null;

TextField 送出信息=null;

Button 确定,刷新谈话区,刷新私聊区;

Label 提示条=null;

String name=null;

Hashtable listTable;

List listComponent=null;

Choice privateChatList;

int width,height;

public ChatArea(String name,Hashtable listTable,int width,int height)

setLayout(null);

setBackground(Color.orange);

this.width=width;

this.height=height;

setSize(width,height);

this.listTable=listTable;

this.name=name;

threadMessage=new Thread(this);

谈话显示区=new TextArea(10,10);

私聊显示区=new TextArea(10,10);

确定=new Button("送出信息到:");

刷新谈话区=new Button("刷新谈话区");

刷新私聊区=new Button("刷新私聊区");

提示条=new Label("双击聊天者可私聊",Label.CENTER);

确定.addActionListener(this);

送出信息.addActionListener(this);

刷新谈话区.addActionListener(this);

刷新私聊区.addActionListener(this);

listComponent=new List();

listComponent.addActionListener(this);

privateChatList=new Choice();

privateChatList.add("大家(*)");

privateChatList.select(0);

add(谈话显示区);

add(私聊显示区);

add(listComponent);

add(提示条);

Panel pSouth=new Panel();

pSouth.add(送出信息);

pSouth.add(确定);

pSouth.add(privateChatList);

pSouth.add(刷新谈话区);

pSouth.add(刷新私聊区);

add(pSouth);

public void setName(String s)

name=s;

public void setSocketConnection(Socket socket,DataInputStream in,DataOutputStream out)

this.socket=socket;

this.in=in;

this.out=out;

threadMessage.start();

if(e.getSource()==确定||e.getSource()==送出信息)

String message="";

String people=privateChatList.getSelectedItem();

people=people.substring(0,people.indexOf("("));

message=送出信息.getText();

if(message.length()0)

if(people.equals("大家"))

out.writeUTF("公共聊天内容:"+name+"说:"+message);

else

out.writeUTF("私人聊天内容:"+name+"悄悄地说:"+message+"#"+people);

catch(IOException event)

else if(e.getSource()==listComponent)

privateChatList.insert(listComponent.getSelectedItem(),0);

privateChatList.repaint();

else if(e.getSource()==刷新谈话区)

谈话显示区.setText(null);

else if(e.getSource()==刷新私聊区)

私聊显示区.setText(null);

String s=null;

s=in.readUTF();

if(s.startsWith("聊天内容:"))

String content=s.substring(s.indexOf(":")+1);

谈话显示区.append("\n"+content);

if(s.startsWith("私人聊天内容:"))

私聊显示区.append("\n"+content);

else if(s.startsWith("聊天者:"))

String people=s.substring(s.indexOf(":")+1,s.indexOf("性别"));

listTable.put(people,people+"("+sex+")");

listComponent.add((String)listTable.get(people));

listComponent.repaint();

else if(s.startsWith("用户离线:"))

String awayPeopleName=s.substring(s.indexOf(":")+1);

listComponent.remove((String)listTable.get(awayPeopleName));

谈话显示区.append("\n"+(String)listTable.get(awayPeopleName)+"离线");

listTable.remove(awayPeopleName);

catch(IOException e)

listComponent.removeAll();

listTable.clear();

谈话显示区.setText("和服务器的连接已中断\n必须刷新浏览器才能再次聊天");

catch(InterruptedException e)

ChatServer.java

import java.util.*;

public class ChatServer

public static void main(String args[])

Socket you=null;

Hashtable peopleList;

peopleList=new Hashtable();

catch(IOException e1)

System.out.println("正在监听");

try {

you=server.accept();

InetAddress address=you.getInetAddress();

System.out.println("用户的IP:"+address);

if(you!=null)

Server_thread peopleThread=new Server_thread(you,peopleList);

peopleThread.start();

else {

continue;

class Server_thread extends Thread

String name=null,sex=null;

File file=null;

DataInputStream in=null;

Hashtable peopleList=null;

Server_thread(Socket t,Hashtable list)

peopleList=list;

socket=t;

in=new DataInputStream(socket.getInputStream());

out=new DataOutputStream(socket.getOutputStream());

{ String s=null;

if(s.startsWith("姓名:"))

name=s.substring(s.indexOf(":")+1,s.indexOf("性别"));

sex=s.substring(s.lastIndexOf(":")+1);

boolean boo=peopleList.containsKey(name);

if(boo==false)

peopleList.put(name,this);

out.writeUTF("可以聊天:");

Enumeration enum=peopleList.elements();

while(enum.hasMoreElements())

Server_thread th=(Server_thread)enum.nextElement();

th.out.writeUTF("聊天者:"+name+"性别"+sex);

if(th!=this)

out.writeUTF("聊天者:"+th.name+"性别"+th.sex);

out.writeUTF("不可以聊天:");

else if(s.startsWith("公共聊天内容:"))

String message=s.substring(s.indexOf(":")+1);

((Server_thread)enum.nextElement()).out.writeUTF("聊天内容:"+message);

else if(s.startsWith("用户离开:"))

{ try

if(th!=thisth.isAlive())

th.out.writeUTF("用户离线:"+name);

catch(IOException eee)

peopleList.remove(name);

System.out.println(name+"用户离开了");

else if(s.startsWith("私人聊天内容:"))

String 悄悄话=s.substring(s.indexOf(":")+1,s.indexOf("#"));

String toPeople=s.substring(s.indexOf("#")+1);

Server_thread toThread=(Server_thread)peopleList.get(toPeople);

if(toThread!=null)

toThread.out.writeUTF("私人聊天内容:"+悄悄话);

out.writeUTF("私人聊天内容:"+toPeople+"已经离线");

catch(IOException ee)

import java.applet.*;

ClientChat.java

public class ClientChat extends Applet implements Runnable

InputNameTextField 用户提交昵称界面=null;

ChatArea 用户聊天界面=null;

Label 提示条;

Panel north, center;

Thread thread;

public void init()

int width=getSize().width;

int height=getSize().height;

listTable=new Hashtable();

setLayout(new BorderLayout());

用户提交昵称界面=new InputNameTextField(listTable);

int h=用户提交昵称界面.getSize().height;

用户聊天界面.setVisible(false);

提示条=new Label("正在连接到服务器,请稍等...",Label.CENTER);

提示条.setForeground(Color.red);

north=new Panel(new FlowLayout(FlowLayout.LEFT));

center=new Panel();

north.add(用户提交昵称界面);

north.add(提示条);

center.add(用户聊天界面);

add(north,BorderLayout.NORTH);

add(center,BorderLayout.CENTER);

validate();

public void start()

if(socket!=nullin!=nullout!=null)

{ try

in.close();

out.close();

catch(Exception ee)

catch (IOException ee)

提示条.setText("连接失败");

if(socket!=null)

InetAddress address=socket.getInetAddress();

提示条.setText("连接:"+address+"成功");

用户提交昵称界面.setSocketConnection(socket,in,out);

north.validate();

if(thread==null)

thread=new Thread(this);

thread.start();

public void stop()

thread=null;

this.showStatus(e.toString());

while(thread!=null)

if(用户提交昵称界面.get能否聊天()==true)

用户聊天界面.setVisible(true);

用户聊天界面.setName(用户提交昵称界面.getName());

用户聊天界面.setSocketConnection(socket,in,out);

提示条.setText("祝聊天愉快!");

center.validate();

Thread.sleep(100);

InputNameTextField.java

public class InputNameTextField extends Panel implements ActionListener,Runnable

TextField nameFile=null;

Checkbox male=null,female=null;

CheckboxGroup group=null;

Button 进入聊天室=null,退出聊天室=null;

Thread thread=null;

boolean 能否聊天=false;

public InputNameTextField(Hashtable listTable)

nameFile=new TextField(10);

group=new CheckboxGroup();

male=new Checkbox("男",true,group);

female=new Checkbox("女",false,group);

进入聊天室=new Button("进入");

退出聊天室=new Button("退出");

进入聊天室.addActionListener(this);

退出聊天室.addActionListener(this);

add(new Label("昵称:"));

add(nameFile);

add(male);

add(female);

add(进入聊天室);

add(退出聊天室);

退出聊天室.setEnabled(false);

public void set能否聊天(boolean b)

能否聊天=b;

public boolean get能否聊天()

return 能否聊天;

public String getName()

return name;

try{

nameFile.setText(""+e);

public Socket getSocket()

return socket;

if(e.getSource()==进入聊天室)

退出聊天室.setEnabled(true);

if(能否聊天==true)

nameFile.setText("您正在聊天:"+name);

this.setName(nameFile.getText());

String sex=group.getSelectedCheckbox().getLabel();

if(socket!=nullname!=null)

out.writeUTF("姓名:"+name+"性别:"+sex);

nameFile.setText("没有连通服务器"+ee);

if(e.getSource()==退出聊天室)

out.writeUTF("用户离开:");

String message=null;

if(in!=null)

message=in.readUTF();

nameFile.setText("和服务器断开"+e);

if(message.startsWith("可以聊天:"))

能否聊天=true;

else if(message.startsWith("聊天者:"))

String people=message.substring(message.indexOf(":")+1);

listTable.put(people,people);

else if(message.startsWith("不可以聊天:"))

能否聊天=false;

nameFile.setText("该昵称已被占用");

求Java Socket 聊天室代码

两个类,实现交互

import java.io.BufferedWriter;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

public class MutiChat

MutiChat mc = new MutiChat();

mc.receive().start();

mc.send().start();

* 接收信息

* @return

private Thread receive()

return new Thread()

ServerSocket server_socket = null;

Socket sk = null;

BufferedReader in = null;

sk = server_socket.accept();

in = new BufferedReader(new InputStreamReader(sk

String str = in.readLine();

System.out.println(str);

} catch (Exception e)

};

private Thread send()

Socket client_socket = null;

PrintWriter out = null;

in = new BufferedReader(

new InputStreamReader(System.in));

out = new PrintWriter(new BufferedWriter(

new OutputStreamWriter(client_socket

.getOutputStream())), true);

out.println(str);

Thread.sleep(1000);

} catch (Exception ex)

以上就是土嘎嘎小编为大家整理的java简单聊天室源代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章