网页聊天java代码大全 java实现网页聊天

急需一个java编程实现的简单聊天窗口代码

import java.awt.*;

创新互联主要从事成都网站制作、成都网站设计、外贸营销网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务乌拉特前,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

import java.awt.event.*;

import javax.swing.*;

import java点虐 .*;

import java.io.*;

public class ClientDemo01 {

public static void main(String[] args){

JFrame f=new JFrame("AA");

JPanel p1=new JPanel();

JPanel p2=new JPanel();

JTextArea ta=new JTextArea(15,30);

ta.setEditable(false); //文本域只读

JScrollPane sp=new JScrollPane(ta); //滚动窗格

JTextField tf=new JTextField(20);

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

p1.add(sp);

p2.add(tf);

p2.add(b);

f.add(p1,"Center");

f.add(p2,"South");

f.setBounds(300,300,360,300);

f.setVisible(true);

f.setResizable(false);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Socket socket=null;

BufferedInputStream bis=null;

BufferedOutputStream bos=null;

try{

socket=new Socket("192.168.0.4",5000);

bis=new BufferedInputStream(socket.getInputStream());

bos=new BufferedOutputStream(socket.getOutputStream());

MyThread01 mt=new MyThread01(bis,ta);

mt.start();

}catch(Exception e){

e.printStackTrace();

}

b.addActionListener(new ButtonActionListener01(tf,ta,bos));

}

}

class ButtonActionListener01 implements ActionListener{

JTextField tf;

JTextArea ta;

BufferedOutputStream bos;

public ButtonActionListener01(JTextField tf,JTextArea ta,BufferedOutputStream bos){

this.tf=tf;

this.ta=ta;

this.bos=bos;

}

public void actionPerformed(ActionEvent e){

String message=tf.getText();

if(!message.equals("")){

tf.setText(""); //清空文本框

ta.append("AA:"+message+"\n"); //添加到文本域并换行

try{

bos.write(message.getBytes());

bos.flush();

}catch(Exception ex){

System.out.println("发送失败");

}

}

}

}

class MyThread01 extends Thread{

BufferedInputStream bis;

JTextArea ta;

public MyThread01(BufferedInputStream bis,JTextArea ta){

this.bis=bis;

this.ta=ta;

}

public void run(){

try{

while(true){

byte[] b=new byte[100];

int length=bis.read(b);

String message=new String(b,0,length);

ta.append("BB:"+message+"\n");

}

}catch(Exception e){

e.printStackTrace();

}

}

} import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java点虐 .*;

import java.io.*;

public class ServerDemo01{

public static void main(String[] args){

JFrame f=new JFrame("BB");

JPanel p1=new JPanel();

JPanel p2=new JPanel();

JTextArea ta=new JTextArea(12,30); //文本域,第一个参数为行数,第二个参数为列数

ta.setEditable(false); //文本域只读

JScrollPane sp=new JScrollPane(ta); //滚动窗格

JTextField tf=new JTextField(20);

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

p1.add(sp);

p2.add(tf);

p2.add(b);

f.add(p1,"Center");

f.add(p2,"South");

f.setBounds(300,300,360,300);

f.setVisible(true);

f.setResizable(false);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ServerSocket server=null;

Socket socket=null;

BufferedInputStream bis=null;

BufferedOutputStream bos=null;

try{

server=new ServerSocket(5000);

//ta.append("等待AA连接...\n");

socket=server.accept();

//ta.append("AA已连接\n");

bis=new BufferedInputStream(socket.getInputStream());

bos=new BufferedOutputStream(socket.getOutputStream());

MyThread1 mt=new MyThread1(bis,ta);

mt.start();

}catch(Exception e){

e.printStackTrace();

}

b.addActionListener(new ButtonActionListener1(tf,ta,bos));

}

}

class ButtonActionListener1 implements ActionListener{

JTextField tf;

JTextArea ta;

BufferedOutputStream bos;

public ButtonActionListener1(JTextField tf,JTextArea ta,BufferedOutputStream bos){

this.tf=tf;

this.ta=ta;

this.bos=bos;

}

public void actionPerformed(ActionEvent e){

String message=tf.getText(); //获取文本框中的内容

if(!message.equals("")){

tf.setText(""); //清空文本框

ta.append("BB:"+message+"\n"); //添加到文本域并换行

try{

bos.write(message.getBytes());

bos.flush();

}catch(Exception ex){

System.out.println("发送失败!");

}

}

}

}

class MyThread1 extends Thread{

BufferedInputStream bis;

JTextArea ta;

public MyThread1(BufferedInputStream bis,JTextArea ta){

this.bis=bis;

this.ta=ta;

}

public void run(){

try{

while(true){

byte[] b=new byte[100];

int length=bis.read(b);

String message=new String(b,0,length);

ta.append("AA:"+message+"\n");

}

}catch(Exception e){

e.printStackTrace();

}

}

}

你好,你有用java编写的聊天室的代码吗,基于c/s架构的

服务端 用户名 y 密码 1 客户端代码在我的评论里,这敲不了那么多字,没办法。

登陆实现类:class Login

package com.server;

import java.awt.Color;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

public class Login {

boolean f=false;//按登录时设置的一个标志

private JFrame frame = new JFrame("Welcome To MLDN") ;

//设置窗体

private JButton submit = new JButton("登陆");//设置登录按钮

private JButton reset = new JButton("重置");//设置重置按钮

private JLabel nameLab = new JLabel("服务器:") ;//标签实例化

private JLabel passLab = new JLabel("密 码:"); //标签实例化

private JLabel infoLab = new JLabel("服务器登陆系统"); //标签实例化

private JTextField nameText = new JTextField(10);//单行文本输入条

private JPasswordField passText = new JPasswordField() ;//单行密码文本输入条

public Login(){//登录窗口构造方法

Font fnt = new Font("Serief",Font.ITALIC + Font.BOLD,12); //设置字体

infoLab.setFont(fnt) ; // 设置标签的显示文字

submit.addActionListener(new ActionListener(){ //采用内部匿名类

public void actionPerformed(ActionEvent e){

if(e.getSource()==submit){ //判断触发器源是否是提交按钮

String tname = nameText.getText() ; //得到输入的用户名

String tpass = new String(passText.getPassword()) ;//得到输入的密码,此时通过getPassageword()方法返回的是字符数组

LoginCheck log = new LoginCheck(tname,tpass) ;//实例化LoginCheck对象,传入输入的用户名和密码

if(log.validate()){//对用户名和密码进行验证

try{ //线程异常处理try

Thread.sleep(2000); //2秒后打开聊天窗口

f=true; //登录成功后的表示项为true

frame.dispose(); //关闭本窗口

}catch(Exception e1){//异常获取

e1.printStackTrace();

}

}else{

infoLab.setText("登陆失败,错误的用户名或密码!") ;//登录失败

}

}

}

});

reset.addActionListener(new ActionListener(){ //采用内部匿名类

public void actionPerformed(ActionEvent e){

if(e.getSource()==reset){ //判断触发器源是否是提交按钮

nameText.setText(""); //设置文本框中的内容

passText.setText(""); //设置文本框中的内容

infoLab.setText("服务器登陆系统"); //恢复标签显示

}

}

});

frame.addWindowListener(new WindowAdapter(){//加入窗口监听

public void windowClosing(WindowEvent e){ }

}); // 加入事件

frame.setLayout(null); //使用绝对定位

nameLab.setBounds(5,5,60,20); //设置标签的位置及大小

passLab.setBounds(5,30,60,20); //设置标签的位置及大小

infoLab.setBounds(5,65,220,30); //设置标签的位置及大小

nameText.setBounds(65,5,100,20); //设置文本域的位置及大小

passText.setBounds(65,30,100,20); //设置密码域的位置及大小

submit.setBounds(165,5,60,20); //设置按钮的位置及大小

reset.setBounds(165,30,60,20); //设置按钮的位置及大小

frame.add(nameLab); //向窗体加入标签

frame.add(passLab); //向窗体加入标签

frame.add(infoLab); //向窗体加入标签

frame.add(nameText); //向窗体加入文本框

frame.add(passText); //向窗体加入密码框

frame.add(submit); //向窗体加入按钮

frame.add(reset) ;//向窗体加入按钮

frame.setSize(280,130); //设置窗体大小

frame.getContentPane().setBackground(Color.green) ;//设置窗体的背景颜色

frame.setLocation(300,200) ;//设置窗体在电脑桌面上的位置

frame.setVisible(true); //显示窗口

while(f==false){ //当登录失败时,一直循环运行,

}

new MyServer();//显示窗体页面

}

}

验证登陆实现类 class LoginCheck

package com.server;

public class LoginCheck {

private String name ;//用户名

private String password ;//密码

//构造方法

public LoginCheck(String name,String password){

this.name = name ;//传递用户名

this.password = password ;//传递密码

}

//验证用户名和密码

public boolean validate(){

//验证方法

if("y".equals(name)"1".equals(password)){ //判断用户名和密码是否正确

return true; //返回true

}else{

return false ;//返回false

}

}

}

package com.server;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java点虐 .ServerSocket;

import java点虐 .Socket;

import java.text.DateFormat;

import java.util.Date;

import javax.swing.*;

聊天实现类 class MyServer

public class MyServer {

protected JLabel lab10;

// 全体变量,做传递的一个组件

String s = "已经成功连接";

// 初始字符串,在两个聊天窗口链接成功时输出,同时作为两个窗口传递字符的一个变量

// 构造方法

public MyServer(){

try{//异常处理

JFrame frame=new JFrame("服务器窗口");

//设置窗体

frame.setLayout(null);

//让布局管理器为空,使用绝对定位

Font fnt=new Font("Serief",Font.PLAIN,40);//字体设置

Font fnt1=new Font("Serief",Font.PLAIN,20);//字体设置

//我的用户名显示

JLabel lab1=new JLabel("服务器名:",JLabel.LEFT);

//标签实例化,文本左对齐

lab1.setBounds(8, 10, 100, 20);

//设置组件位置及大小

frame.add(lab1);

//添加组件

JTextField text2=new JTextField(30); //单行文本输入组件

text2.setBounds(150, 10, 200, 20);//设置组件位置及大小

text2.setEnabled(false);//文本条不可编辑

text2.setText("笑笑聊天室");//输入内容

text2.setFont(fnt1);//设置字体

frame.add(text2);//添加组件

//服务器IP显示

JLabel lab2=new JLabel("当前服务器IP:",JLabel.LEFT);

//标签实例化,文本左对齐

lab2.setBounds(8, 45, 100, 20);//设置组件位置及大小

frame.add(lab2);//添加组件

JTextField text3=new JTextField(30);//单行文本输入组件

text3.setBounds(150, 45, 200, 20);//设置组件位置及大小

text3.setEnabled(false);

//文本不可编辑

text3.setText("127.0.0.1");//输入内容

text3.setFont(fnt1);//设置字体

frame.add(text3);

//添加组件

//服务器端口显示

JLabel lab3=new JLabel("当前服务器端口:",JLabel.LEFT);

//标签实例化,文本左对齐

lab3.setBounds(8, 80, 100, 20);//设置组件位置及大小

frame.add(lab3);//添加组件

JTextField text4=new JTextField(30);//单行文本输入组件

text4.setBounds(150, 80, 200, 20);//设置组件位置及大小

text4.setEnabled(false);//文本不可编辑

text4.setText("8888");//输入内容

text4.setFont(fnt1);//设置字体

frame.add(text4);//添加组件

//聊天记录显示

JLabel lab4=new JLabel("聊天记录如下:",JLabel.LEFT);

//标签实例化 文本左对齐

lab4.setBounds(8, 115, 100, 20);//设置组件位置及大小

frame.add(lab4);//添加组件

final JTextArea text1=new JTextArea();//多行文本输入组件

text1.setEnabled(false);//文本不可编辑

text1.setLineWrap(true);//自动换行

JScrollPane scr=new JScrollPane(text1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); //设置滚动条,水平和垂直滚动条始终显示

scr.setBounds(8, 150, 450, 350);//设置组件位置及大小

frame.add(scr);//添加组件

//聊天输入窗口及确定

JLabel lab5=new JLabel("请输入聊天内容:",JLabel.LEFT); //标签实例化,文本左对齐

lab5.setBounds(8, 500, 100, 20);//设置组件位置及大小

frame.add(lab5);//添加组件

final JTextArea text5=new JTextArea();//多行文本输入组件

text5.setLineWrap(true);//自动换行

JScrollPane scr2=new JScrollPane(text5,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动条,水平和垂直滚动条始终显示

scr2.setBounds(150, 500, 300, 50);//设置组件位置及大小

frame.add(scr2);//添加组件

final JButton but=new JButton("确定");//设置确定按钮

but.setFont(fnt);//添加字体设置

but.setBounds(480, 500, 200, 50);//设置组件位置及大小

but.addActionListener(

new ActionListener(){ //采用内部匿名类

public void actionPerformed(ActionEvent e){

if(e.getSource()==but){ //判断触发器源是否是提交按钮

text1.append("笑笑: "+lab10.getText()+"\n ");//在聊天记录上添加文本

text1.append(text5.getText()+"\n"); //将输入的聊天内容输出在聊天记录上

s=text5.getText(); //得到聊天内容

text5.setText(""); // 将聊天窗口内容设置为空

}

}

});

frame.add(but);//添加组件

//当前时间显示

JLabel lab7=new JLabel("时间显示:",JLabel.LEFT);//标签实例化,文本左对齐

lab7.setBounds(450, 20, 100, 20);//设置组件位置及大小

frame.add(lab7);//添加组件

DateFormat df=DateFormat.getDateTimeInstance();//取得系统时间

String df2= df.format(new Date()); //将时间转换成字符串

JLabel lab8=new JLabel(df2,JLabel.LEFT);//标签实例化,文本左对齐

lab8.setBounds(520, 20, 130, 20);//设置组件位置及大小

frame.add(lab8);//添加组件

lab10=lab8; //传递时间显示,以便能在聊天记录上显示记录时间

new Time(lab8); //使时间动态显示

//用户列表显示

JLabel lab6=new JLabel("用户列表:",JLabel.LEFT);//标签实例化,文本左对齐

lab6.setBounds(500, 40, 100, 20);//设置组件位置及大小

frame.add(lab6);//添加组件

JTextArea text6=new JTextArea();//标签实例化,文本左对齐

text6.setEnabled(false);//文本不可编辑

text6.setLineWrap(true);//自动换行

JScrollPane scr3=new JScrollPane(text6,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动条,水平和垂直滚动条始终显示

scr3.setBounds(460, 70, 220, 420);//设置组件位置及大小

frame.add(scr3);//添加组件

//窗口的属性

frame.setSize(700,600);//窗口大小

frame.getContentPane().setBackground(Color.pink);//窗口的背景颜色

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时关闭程序

frame.setLocation(100,50);//在电脑桌面上出现的位置

frame.setVisible(true);//显示窗口

//连个窗口连接

//建立Server Socket并等待连接请求

ServerSocket server =new ServerSocket(8889);

Socket socket=server.accept();

//连接建立,通过Socket获取连接上的输入/输出流

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

final PrintWriter out =new PrintWriter(socket.getOutputStream());

//先读取Client发送的数据,然后从标准输入读取数据发送给Client当接收到bye时关闭连接

String s1="",s2="";

//标志字符串,作为传递字符串使用

//得到其他窗口传递的字符串,并判断是否结束

while(!(s1=in.readLine()).equals("bye")){

text6.setText("可可在线"); //当连接成功是在用户列表中 输出用户名字

if(!s1.equals("")){ //如果传递的字符串不为 空

text1.append("可可: "+lab10.getText()+"\n ");//在聊天记录上添加文本

text1.append(s1+"\n"); //将输入的聊天内容输出在聊天记录上

}

s2=s;//将在聊天窗口中得到的字符串传递给输出字符串

for(;s2.equals("")||s2.equals(null);s2=s){//当传递的字符串为空时等待用户输入聊天内容

}

s="";//将在聊天窗口中得到的字符串设为空

if(!s2.equals("")!s2.equals(null)){// s2不为空时做

out.println(s2); //向其他窗口输出字符串

}

out.flush();//输出聊天内容

}

//关闭连接

in.close();

out.close();

socket.close();

server.close();

}catch(Exception e){

}

}

//main函数

public static void main(String args[]){

new Login();//登录实现 } }

}

}

时间类 class Time

package com.server;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.swing.JLabel;

import javax.swing.Timer; //时间类

public class Time {

public Time(JLabel time){

//构造方法 this.setTimer(time);

//设置时间

}

public void setTimer(JLabel time){

//设置时间方法

final JLabel varTime = time;

//传递组件

Timer timeAction = new Timer(1000, new ActionListener() {

//时间监听

public void actionPerformed(ActionEvent e) {

long timemillis = System.currentTimeMillis();//得到系统时间

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//转换日期显示格式

varTime.setText(df.format(new Date(timemillis)));//输出得到的时间

}

});

timeAction.start(); //开启线程

}

}

java实现聊天室是怎么做到的?

Java 实现聊天室可以分为以下几个步骤:

建立服务器端

首先需要建立一个服务器端,负责接收客户端的连接请求并处理客户端发送过来的消息。

建立客户端

然后需要建立客户端,客户端通过网络连接到服务器端,并向服务器端发送消息。

实现通信协议

为了实现聊天室功能,需要定义一个通信协议,规定客户端和服务器端之间的通信格式,例如消息的头部和内容等。

实现多线程处理

聊天室通常会有多个用户同时在线,因此需要使用多线程来处理多个客户端的连接请求和消息传递。

实现GUI界面(可选)

为了方便用户使用,可以实现一个GUI界面,让用户可以方便地发送和接收消息。

以下是一个简单的 Java 聊天室的代码示例:

java

Copy code

// 服务器端代码

public class Server {

public static void main(String[] args) {

try {

ServerSocket serverSocket = new ServerSocket(8888);

while (true) {

Socket socket = serverSocket.accept();

new Thread(new ServerThread(socket)).start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

class ServerThread implements Runnable {

private Socket socket;

private BufferedReader reader;

private PrintWriter writer;

public ServerThread(Socket socket) {

this.socket = socket;

try {

reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

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

} catch (IOException e) {

e.printStackTrace();

}

}

public void run() {

try {

String msg;

while ((msg = reader.readLine()) != null) {

// 处理客户端发送过来的消息

System.out.println("接收到消息:" + msg);

// 将消息发送给所有客户端

for (Socket s : ServerThreadList.getList()) {

if (s != socket) {

PrintWriter w = new PrintWriter(s.getOutputStream());

w.println(msg);

w.flush();

}

}

}

// 关闭连接

socket.close();

ServerThreadList.removeThread(this);

} catch (IOException e) {

e.printStackTrace();

}

}

}

class ServerThreadList {

private static List

list = new ArrayList();

public static void addThread(ServerThread thread) {

list.add(thread);

}

public static void removeThread(ServerThread thread) {

list.remove(thread);

}

public static List

getList() {

return list;

}

}

// 客户端代码

public class Client {

public static void main(String[] args) {

try {

Socket socket = new Socket("localhost", 8888);

new Thread(new ClientThread(socket)).start();

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

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

while (true) {

String msg = reader.readLine();

writer.println(msg);

writer.flush();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

class ClientThread implements Runnable {

private Socket socket;

private BufferedReader reader;

public ClientThread(Socket socket) {

this.socket = socket;

try {

reader

jsp网页怎么实现即时聊天

jsp中可以实现简单的聊天功能,例子如下:

chat.jsp代码如下:

%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%

%@ page language="java" contentType="text/html;charset=GB2312"%

html

body

%

try{

request.setCharacterEncoding("GB2312");

String mywords=request.getParameter("message");

String t="";

if(application.getAttribute("words")==null mywords!=null){

t= (String)request.getRemoteAddr() + ":" + mywords + "br/";

application.setAttribute("words",(Object)t);

out.println(t);

}

else if(mywords!=null){

t=(String)application.getAttribute("words");

t += (String)request.getRemoteAddr() + ":" + mywords + "br/";

application.setAttribute("words",(Object)t);

out.println(t);

}

}

catch(Exception e){

}

%

form method="post" action="index.jsp"

input name="message" type="text" size=50

input type="submit" value="发送消息"

/form

/body/html

输出对话内容如下:


网站栏目:网页聊天java代码大全 java实现网页聊天
分享地址:http://hbruida.cn/article/ddgpjsp.html