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

用JAVA 编写简单网络聊天程序,第1张

/

基于UDP协议的聊天程序

2007918

/

//导入包

import javaawt;

import javaawtevent;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswing;

import javanet;

public class Chat extends JFrame implements ActionListener

{

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

public static final String sendIP = "172188255";

//发送端口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();

//注册消息框监听器

txtMSGaddActionListener(this);

btnSendaddActionListener(this);

try

{

//端口:9527

ds =new DatagramSocket(sendPort);

}

catch(Exception ex)

{

exprintStackTrace();

}

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

//匿名类

new Thread(new Runnable()

{

public void run()

{

byte buf[] = new byte[1024];

//表示接受数据报包

while(true)

{

try

{

DatagramPacket dp = new DatagramPacket(buf,1024,InetAddressgetByName(txtIPgetText()),sendPort);

dsreceive(dp);

lstadd("消息来自◆" + dpgetAddress()getHostAddress() + "◆"+"说:" + new String (buf,0,dpgetLength()) /+ dpgetPort()/,0);

}

catch(Exception e)

{

if(dsisClosed())

{

eprintStackTrace();

}

}

}

}

})start();

//关闭窗体事件

thisaddWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent w)

{

Systemoutprintln("test");

int n=JOptionPaneshowConfirmDialog(null,"是否要退出","退出",JOptionPaneYES_NO_OPTION);

if(n==JOptionPaneYES_OPTION)

{

dispose();

Systemexit(0);

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

}

}

});

}

//界面设计布局

public void CreateInterFace()

{

thisadd(lst,BorderLayoutCENTER);

thisadd(p,BorderLayoutSOUTH);

padd(lblIP);

padd(txtIP);

padd(lblMSG);

padd(txtMSG);

padd(btnSend);

txtIPsetText(sendIP);

//背景颜色

lstsetBackground(Coloryellow);

//JAVA默认风格

thissetUndecorated(true);

thisgetRootPane()setWindowDecorationStyle(JRootPaneFRAME);

thissetSize(600,500);

thissetTitle("〓聊天室〓");

thissetResizable(false);//不能改变窗体大小

thissetLocationRelativeTo(null);//窗体居中

thissetDefaultCloseOperation(JFrameDO_NOTHING_ON_CLOSE);

thissetVisible(true);

txtMSGrequestFocus();//消息框得到焦点

}

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

public static void main(String[]args)

{

new Chat();

}

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

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

public void actionPerformed(ActionEvent e)

{

//得到文本内容

buf = txtMSGgetText()getBytes();

//判断消息框是否为空

if (txtMSGgetText()length()==0)

{

JOptionPaneshowMessageDialog(null,"发送消息不能为空","提示",JOptionPaneWARNING_MESSAGE);

}

else{

try

{

InetAddress address = InetAddressgetByName(sendIP);

DatagramPacket dp = new DatagramPacket(buf,buflength,InetAddressgetByName(txtIPgetText()),sendPort);

dssend(dp);

}

catch(Exception ex)

{

exprintStackTrace();

}

}

txtMSGsetText("");//清空消息框

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

if(egetSource()==btnSend)

{

buf = txtMSGgetText()getBytes();

try

{

DatagramPacket dp = new DatagramPacket(buf,buflength,InetAddressgetByName(txtIPgetText()),sendPort);

}

catch(Exception ex)

{

exprintStackTrace();

}

txtMSGsetText("");//清空消息框

txtMSGrequestFocus();

}

}

}

聊天具体是这么聊,聊天室、群聊、一对一。java其实websocket足矣,ws服务器部署起来,客户端程序连接ws服务器服务,用服务器转发作为消息传输机制,当然你要大文件传输和视频通话就用socket转发连接,p2p通信,这里的p2pjava因为都是服务器部署,不需要做外网打洞穿透,因为web服务器他是本地环境,明白不。你用windows应用程序就需要外网穿透打洞,你不可能视频数据也让服务器转发吧,聊天人数越来越多,服务器承受不了,它需要服务器指派点对点单向传输,不去途径服务器。

要搭建一个Java多人聊天应用程序,您需要按照以下步骤进行 *** 作:

设计用户界面:设计聊天界面,包括消息列表、输入框、发送按钮等组件。

建立服务器:在云服务商或自己的服务器上建立一个服务器,用于存储和转发消息。您可以选择使用现有的聊天服务器,如Firebase Realtime Database、Google Cloud Messaging、XMPP等,也可以自己编写服务器端代码。

登录和注册:在应用中实现用户登录和注册功能,以便用户可以使用应用。

建立Socket连接:使用Socket API建立与服务器的Socket连接。您可以使用Java中的Socket或Android中的Socket类来建立连接。

发送消息:在应用中实现发送消息的功能。当用户在应用中输入一条消息并点击发送按钮时,应用将该消息发送到服务器。

接收消息:使用Socket API监听服务器发送的消息。当服务器有新消息时,应用将其接收并显示在消息列表中。

处理消息:在应用中处理接收到的消息。当应用接收到一条消息时,它需要将消息保存到本地数据库中,并更新消息列表。

实现通知:当应用在后台运行时,您需要使用通知来通知用户有新消息到达。您可以使用Android中的通知API来实现通知功能。

实现其他功能:您可能还需要实现其他功能,如消息撤回、表情符号、和文件发送等。

需要注意的是,聊天应用中的数据传输需要使用安全的方式进行,以确保用户数据不被窃取。您可以使用SSL或TLS等安全协议来保护数据传输。

同时,为了实现多人聊天,您需要在服务器端实现广播机制,将消息广播到所有连接的客户端。在Java中,您可以使用多线程来实现广播机制,每个客户端连接都在单独的线程中运行。当服务器接收到一条消息时,它将该消息发送到所有客户端连接的线程中,以便广播到所有客户端。

以上是搭建Java多人聊天应用程序的基本步骤,具体实现方式因应用需求和技术选择而异。

聊天程序又叫即时通讯系统

分类两部分:客户端和服务端

客户端:用户聊天的界面

服务端:接收消息并转发到指定用户

其中服务端和客户端用tcp或者udp连接,使用socket编程完成通信。

按着这个思路可以开发出一套聊天程序

客户端常用界面 bs版本的又layim

服务端 openfire或者自己实现

以上就是关于用JAVA 编写简单网络聊天程序全部的内容,包括:用JAVA 编写简单网络聊天程序、java聊天功能怎么做的有没有知道的可以指导一下吗、java多人聊天怎么搭建求介绍!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10136517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存