「java实现实时聊天」Java实现聊天

博主:adminadmin 2022-11-27 04:30:09 54

今天给各位分享java实现实时聊天的知识,其中也会对Java实现聊天进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java如何实现一对一聊天?谢谢了。

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

怎么用java实现实时聊天跟直播功能

直接用zego的SDK吧,web、iOS、Android都可以支持。有现成的demo和SDK试用

用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 web 应该怎样实现实时视频通话?

要想java web 实现实时视频通话,建议直接用现成sdk来实现,这样效率更高,比如zego即构科技的实时视频sdk,支持四行代码即可接入,30分钟内可快速实现音视频功能。

java语音聊天室怎样实现啊?

实现java语音聊天室的方法很简单,要么自己从零研发,要么直接使用别人的成品,意思是找网上的第三方,他们自己有研发产品的。建议考虑ZEGO即构科技,他们的语聊房SDK很好用的,提供低延迟和低成本的方案供选择,在保障语音质量的前提下,码率最低可到8kbps,可以试试。

高手进,java实现聊天功能?

。。。这个我以前也遇到过、不过我是用C#写的、不过后来也有java的、你可以、使用Swing做的简单界面,及使用Socket套接字实现简单聊天 。。。。。。但是、我不知道你问的是C/S模式还是B/S 模式?

其中、B/S模式可以用Servlet来实现,思路是通过Context上下文绑定参数实现

而C/S模式的,是通过RMI远程调用的方法实现的。。。先给你个C/S模式的核心代码。。。import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;

import java.net.*;public class Server extends JFrame

{

public static void main(String [] args)

{

Server server=new Server();

//设定框架的关闭方式

server.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//显示框架

server.setVisible(true);

server.pack();

CreateServer cs=new CreateServer(server);

}

// 设定框架的宽度和高度

private static final int WIDTH=450;

private static final int HEIGHT=450;

// 聊天信息框

JTextArea mainArea=new JTextArea(12,35);

// 发送信息的填写框

JTextArea sendArea=new JTextArea(5,30);

// 构造函数

public Server()

{

//定位框架

Toolkit kit=Toolkit.getDefaultToolkit();

Dimension screenSize=kit.getScreenSize();//获取电脑当前分辨率

int width=screenSize.width;

int height=screenSize.height;

int x=(width-WIDTH)/2;

int y=(height-HEIGHT)/2;

//设置窗口显示位置

setLocation(x,y);

//设置框架大小

setSize(WIDTH,HEIGHT);

//设置标题

setTitle("小新新聊天服务器");

//设置窗口的自定义大小

setResizable(false);

//在内容表格上创建3个面板并加入到内容表格

Container con=this.getContentPane();

JPanel labelPanel=new LabelPanel();

con.add(labelPanel,BorderLayout.NORTH);

JPanel contentPanel=new ContentPanel();

con.add(contentPanel,BorderLayout.CENTER);

JPanel sendPanel=new SendPanel();

con.add(sendPanel,BorderLayout.SOUTH);

}

//聊天窗口的标题面板

class LabelPanel extends JPanel

{

public LabelPanel()

{

Font font=new Font("Dialog",Font.BOLD,18);

JLabel label=new JLabel("欢迎使用小新新聊天服务器");

label.setFont(font);

this.add(label);

}

}

// 聊天信息查看面板

//该面板内的区域为不可编辑区域

class ContentPanel extends JPanel

{

public ContentPanel()

{

FlowLayout fl=new FlowLayout(FlowLayout.CENTER);

this.setLayout(fl);

mainArea.setLineWrap(true);

mainArea.setEditable(false);

JScrollPane scrollPanel=new JScrollPane(mainArea);

this.add(scrollPanel);

}

}

// 填写发送信息的面板

class SendPanel extends JPanel

{

public SendPanel()

{

//面板的组件之间水平分隔15像素,垂直间距10像素

FlowLayout layout=new FlowLayout(FlowLayout.LEFT,15,10);

this.setLayout(layout);

sendArea.setLineWrap(true);

JScrollPane scrollPanel=new JScrollPane(sendArea);

this.add(scrollPanel);

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

this.add(send);

//对发送按钮注册动作监听器

send.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

String msg=sendArea.getText();

if(!msg.equals(""))

{

mainArea.append("【服务器】:"+msg+"\n");

sendArea.setText("");

CreateServer.sendMsg(msg);

}

else

{

return;

}

}

});

}

}

}

//创建服务器ServerSocket的类

class CreateServer extends Thread

{

private Server server;

private static BufferedReader in=null;//存储客户端发送到服务器的数据

private static PrintWriter out=null;//存储服务器发送到客户端的数据

private Socket socket=null;//等待客户端连接socket

private ServerSocket ss=null;//开启服务器socket连接

//构造函数

public CreateServer(Server s)

{

this.server=s;

try

{

ss=new ServerSocket(2345);

System.out.println("服务器成功启动...!");

socket=ss.accept();//等待客户端请求

//获取输入到服务器的数据

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

//获取输出到客户端的数据

out=new PrintWriter(socket.getOutputStream(),true);

out.println("你好!");

}

catch(Exception r)

{

r.printStackTrace();

}

this.start();//启动线程

}

//实现信息发送到客户端的发送方法

public static void sendMsg(String s)

{

try

{

out.println("【服务器】:"+s+"\n");

}

catch(Exception e)

{

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

e.printStackTrace();

}

}

// 线程Thread类的run方法实现对客户端发送来的数据监听

//线程启动后开始该方法,执行线程体

public void run()

{

String msg="";

while(true)

{

try

{

msg=in.readLine();

//Thread.sleep(500);//线程睡眠

}

catch (SocketException ex)

{

ex.printStackTrace();

break;

}

catch(IOException r)

{

r.printStackTrace();

break;

}

//若从客户端获取的信息不为空对象也不为空串

//则把信息显示在聊天信息文本域

if(msg!=null msg.trim()!="")

{

server.mainArea.append(msg+"\n");

}

}

}

}

关于java实现实时聊天和Java实现聊天的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。