「怎么用java写聊天工具」怎么用java写聊天工具文档
本篇文章给大家谈谈怎么用java写聊天工具,以及怎么用java写聊天工具文档对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
用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聊天功能怎么做的?有没有知道的可以指导一下吗?
聊天具体是这么聊,聊天室、群聊、一对一。java其实websocket足矣,ws服务器部署起来,客户端程序连接ws服务器服务,用服务器转发作为消息传输机制,当然你要大文件传输和视频通话就用socket转发连接,p2p通信,这里的p2pjava因为都是服务器部署,不需要做外网打洞穿透,因为web服务器他是本地环境,明白不。你用windows应用程序就需要外网穿透打洞,你不可能视频数据也让服务器转发吧,聊天人数越来越多,服务器承受不了,它需要服务器指派点对点单向传输,不去途径服务器。
如何用Java写聊天软件?
做界面肯定要swing 然后结合Socket编写网络程序 多个客户端的话 要启动线程来配置每个客户端
java聊天功能怎么做?
想要实现java聊天功能比较简单,要么直接找源码,要么使用第三方的sdk做一些开发。建议可以考虑接入ZEGO即时通讯SDK来实现,支持Android java开发,集成方便,一对一、一对多聊天都可快速搭建,重要的是不担心消息会丢失,千万级并发也稳定,个人建议你们可以试试。
java聊天窗口的实现
编写一数据报通信程序 实现简单的聊天功能
聊天内容 和 输入文本 分别为当前聊天的历史信息和当前要传送出去的聊天文本 确定 清空 退出 三个按钮分别实现发送当前聊天文本 清空当前聊天文本和退出系统的功能 import java awt Font;
import java awt event ActionEvent;
import java awt event ActionListener;
import java awt event WindowEvent;
import java awt event WindowListener;
import DatagramPacket;
import DatagramSocket;
import InetAddress;
import SocketException;
import javax swing JButton;
import javax swing JFrame;
import javax swing JLabel;
import javax swing JScrollBar;
import javax swing JScrollPane;
import javax swing JTextArea;
import javax swing JTextField;
public class Frame extends JFrame implements WindowListener{
private JTextArea text;
private JTextField ipText;
private JTextField sendText;
private JButton button;
private JButton button ;
private JButton button ;
private DatagramSocket socket;
private JScrollBar vsBar;
public Frame(){
setTitle( 聊天器 );
setBounds( );
text=new JTextArea();
text setEditable(true);
setLayout(null);
JScrollPane textPanel = new JScrollPane(text);
vsBar = textPanel getVerticalScrollBar();
textPanel setBounds( );
getContentPane() add(textPanel);
JLabel label=new JLabel( 请输入对方IP );
label setFont(new Font( Font BOLD ));
label setBounds( );
getContentPane() add(label);
ipText = new JTextField();
ipText setBounds( );
getContentPane() add(ipText);
button=new JButton();
button setText( 确定 );
button setBounds( );
button setFont(new Font( Font BOLD ));
getContentPane() add(button);
button addActionListener(new send());
button =new JButton( 清空 );
button setBounds( );
button setFont(new Font( Font BOLD ));
getContentPane() add(button );
button addActionListener(new clear());
button =new JButton( 退出 );
button setBounds( );
button setFont(new Font( Font BOLD ));
getContentPane() add(button );
button addActionListener(new exit());
this addWindowListener(this);
sendText = new JTextField();
sendText setBounds( );
getContentPane() add(sendText);
//server();
pack();
setVisible(true);
}
class send implements ActionListener{
public void actionPerformed(ActionEvent e) {
try{
String ip=ipText getText();
InetAddress address=InetAddress getByName(ip);
byte[] data=sendText getText() getBytes();
DatagramPacket dp=new DatagramPacket(data data length address );
String myip=InetAddress getLocalHost() getHostAddress();
text append(myip+ :\n +sendText getText()+ \n );
socket send(dp);
sendText setText(null);
}catch(Exception e ){
System out println(e );
}
}
}
class clear implements ActionListener{
public void actionPerformed(ActionEvent e) {
text setText( );
}
}
class exit implements ActionListener{
public void actionPerformed(ActionEvent e) {
System exit( );
}
}
private void server() {
try {
socket=new DatagramSocket( );
byte[] buf=new byte[ ];
final DatagramPacket dp =new DatagramPacket(buf buf length);
Runnable runnable=new Runnable(){
public void run(){
while(true){
try{
Thread sleep( );
socket receive(dp );
String message=new String(dp getData() dp getLength());
String ip=dp getAddress() getHostAddress();
if(!InetAddress getLocalHost() getHostAddress() equals(ip))
text append(ip+ :\n +message+ \n );
}catch(Exception e){
System out println(e);
}
}
}
};
new Thread(runnable) start();
} catch (SocketException e ) {
e printStackTrace();
}
}
public static void main(String[] args) {
Frame frame=new Frame();
}
public void windowActivated(WindowEvent e) {
// TODO Auto generated method stub
}
public void windowClosed(WindowEvent e) {
// TODO Auto generated method stub
}
public void windowClosing(WindowEvent e) {
// TODO Auto generated method stub
System exit( );
}
public void windowDeactivated(WindowEvent e) {
// TODO Auto generated method stub
}
public void windowDeiconified(WindowEvent e) {
// TODO Auto generated method stub
}
public void windowIconified(WindowEvent e) {
// TODO Auto generated method stub
}
public void windowOpened(WindowEvent e) {
// TODO Auto generated method stub
}
lishixinzhi/Article/program/Java/hx/201311/25580
关于怎么用java写聊天工具和怎么用java写聊天工具文档的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。