/
基于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多人聊天怎么搭建求介绍!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)