資源簡介
這個(gè)是帶有界面的基于UDP通信,可以支持多人聊天的代碼,有注解,適合學(xué)習(xí),參考,希望對你有用
代碼片段和文件信息
/**
?*?
?*/
package?UDP;
import?java.awt.FlowLayout;
import?java.awt.GridBagConstraints;
import?java.awt.GridBagLayout;
import?java.awt.Insets;
import?java.awt.TextArea;
import?java.awt.TextField;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?java.awt.event.KeyAdapter;
import?java.awt.event.KeyEvent;
import?java.awt.event.KeyListener;
import?java.awt.event.MouseAdapter;
import?java.awt.event.MouseEvent;
import?java.awt.event.WindowAdapter;
import?java.awt.event.WindowEvent;
import?java.io.IOException;
import?java.net.DatagramPacket;
import?java.net.InetAddress;
import?java.net.MulticastSocket;
import?java.net.UnknownHostException;
import?javax.swing.JButton;
import?javax.swing.JDialog;
import?javax.swing.Jframe;
import?javax.swing.JLabel;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
import?javax.swing.JTextField;
import?javax.swing.border.EmptyBorder;
/*
?*?
?*需求:編寫一個(gè)類似qq那樣可以聊天的可視化圖像界面,實(shí)現(xiàn)功能
?*1)用戶輸入文字可以顯示在公共區(qū)域(所有人都可以看見)
?*?2015年9月8日
?*/
/**
?*?接收顯示在公共區(qū)域信息的類
?*/
class?rev_Message?implements?Runnable?{
MulticastSocket?s?=?null;
rev_Message(MulticastSocket?s)?{
this.s?=?s;
}
@Override
public?void?run()?{
while?(true)?{
//?2定義數(shù)據(jù)包,用于存儲數(shù)據(jù)
byte[]?buf?=?new?byte[1024];
DatagramPacket?dp?=?new?DatagramPacket(buf?0?buf.length);
try?{
System.out.println(“wait?connect...“);
//?3通過Socket的receive方法接收數(shù)據(jù)
s.receive(dp);
//?4通過數(shù)據(jù)包的方法提取包中的數(shù)據(jù)打印
System.out.println(“ip:“?+?dp.getAddress().getHostAddress()
+?“??||port:“?+?dp.getPort());
String?str?=?new?String(dp.getData()?0?dp.getData().length);
System.out.println(“----->data:“?+?str);
String?str1?=?new?String(“ip:“?+?dp.getAddress()?+?“||“
+?“port:“?+?dp.getPort());
createMenu.getTxr_rev().append(
“\r\n“?+?str1?+?“\r\n“?+?str?+?“\r\n“);
}?catch?(IOException?e)?{
throw?new?RuntimeException(“接收失敗“);
}
}
}
}
@SuppressWarnings(“serial“)
class?createMenu?extends?Jframe?{
private?JButton?btn_clear?btn_send?btn_close?btn_sure;
private?static?TextArea?txr_send;
private?static?TextArea?txr_rev;
private?static?JTextField?txrname;
private?JPanel?contentPane1;
private?JDialog?dialog;
private?JLabel?label;
MulticastSocket?s?=?null;
InetAddress?group?=?null;
createMenu()?{
this.s?=?UDP_ChatDemo2.s;
this.group?=?UDP_ChatDemo2.group;
init_menu();
someEvent();
}
private?void?someEvent()?{
btn_send.addActionListener(new?SendMsg2(s?group));
btn_clear.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
txr_send.setText(““);
}
});
btn_close.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
System.exit(0);
}
});
txr_rev.addKeyListener(new?KeyAdapter()?{
@Override
public?void?keyTyped(KeyEvent?
評論
共有 條評論