一个UDP(多播)局域聊天的简单实现 (JAVA)
来源:互联网 发布:新公司搜索引擎优化 编辑:程序博客网 时间:2024/06/08 19:37
多播类:
/**
* 程序名称:Broadcast.java
* 程序作用:创建一个多播类,用于数据的发送与接收
* 程序作者:J.J.Y
*
*/
import java.io.*; import java.net.*; public class Broadcast { //定义播段地址,接收端口,发送端口 public static final String BroadcastGroup = "228.6.7.8"; public static final int BroadcastRecvPort = 4567; public static final int BroadcastSendPort = 4566; //接收字符串 private String Message; //接收包和发送包 private DatagramPacket DataSendPacket; private DatagramPacket DataRecvPacket; //private DatagramSocket SendSocket; //接收缓冲区和发送缓冲区 private byte[] SendBuf = new byte[1024]; private byte[] RecvBuf = new byte[1024]; //发送Socket private DatagramSocket SendSocket; //多播类 MulticastSocket BroadcastClass; //构造函数 public Broadcast() { try { //发送Socket初始化 SendSocket = new DatagramSocket(); //多播段初始化 BroadcastClass = new MulticastSocket(BroadcastRecvPort); //确定多报播地址 BroadcastClass.joinGroup(InetAddress.getByName(BroadcastGroup)); } catch(IOException e) { e.printStackTrace(); } } //发送数据 public void SendData(String InMsg) { try { //发送数据包初始化 SendBuf = InMsg.getBytes(); int length = InMsg.getBytes().length; DataSendPacket = new DatagramPacket(SendBuf,length,InetAddress.getByName(BroadcastGroup),BroadcastRecvPort); //数据发送 SendSocket.send(DataSendPacket); } catch(IOException ioe) { ioe.printStackTrace(); } } //接收数据并返回 public String GetData() { try { //接收数据并送与接收缓冲区 DataRecvPacket = new DatagramPacket(RecvBuf,1024); BroadcastClass.receive(DataRecvPacket); //取得数据并返回数据 Message = new String(DataRecvPacket.getData(),0,DataRecvPacket.getLength()); Message = Message + " from " + DataRecvPacket.getAddress().getHostName(); Message = Message + " 端口 " + DataRecvPacket.getPort(); } catch (IOException ioe) { ioe.printStackTrace(); } return Message; } }
/**一个接收线程,主要用于接收数据,随便也写了发送数据
* 程序名称:Receiver.java
* 程序作用:接收线程类
* 程序作者:J.J.Y
*/
import java.net.*; import java.io.*; import javax.swing.*; public class Receiver extends Thread { //接收的信息 private String Message; private JTextArea displayArea; Broadcast Recv = new Broadcast(); //构造函数, public Receiver(JTextArea RecvArea) { displayArea = RecvArea; } public void run() { while (true) { //监听接收数据包 Message = Recv.GetData(); //System.out.println(Message); //displayArea.setText("11111"); displayArea.append(Message + "\r\n"); } } //发送数据 public void SendMessage(String InMsg) { Recv.SendData(InMsg); } }/** * 程序名称:ChatClient.java * 程序作用:UDP聊天客户端 * 程序作者:J.J.Y */ import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ChatClient extends JFrame implements ActionListener { //接收线程 Receiver recv; //发送文本框 JTextField Sendtxt; public ChatClient() { //客户端界面简单初始化 Sendtxt = new JTextField(); Sendtxt.addActionListener(this); JTextArea DisplayArea = new JTextArea(); JScrollPane js =new JScrollPane(); JViewport port = js.getViewport(); port.add(DisplayArea); // System.out.println(js.getLayout()); //js.add(DisplayArea); this.getContentPane().add(BorderLayout.CENTER,js); this.getContentPane().add(BorderLayout.SOUTH,Sendtxt); this.setSize(300,300); this.show(); //Broadcast brd = new Broadcast(); //brd.SendData("客户端初始化"); //创建一个新的接收线程并运行 recv = new Receiver(DisplayArea); recv.start(); } //事件响应代码 public void actionPerformed(ActionEvent e) { //文本框有内容才发送数据 if (Sendtxt.getText().length() != 0) { recv.SendMessage(Sendtxt.getText()); } } public static void main(String args[]) { new ChatClient(); } }
转载地址:http://www.360doc.com/content/07/1006/15/11586_792012.shtml
- 一个UDP(多播)局域聊天的简单实现 (JAVA)
- 一个UDP(多播)局域聊天的简单实现
- 一个UDP(多播)局域聊天的简单实现
- JAVA实现UDP组播聊天程序
- 使用UDP实现一个简单的聊天程序。
- 利用java UDP协议,实现简单的双人聊天
- Java实现的一个简单聊天软件
- JAVA 多线程实现简单UDP一对一聊天
- Java UDP 单播、多播(组播)、广播、任播(未实现)
- UDP的组播简单实现
- 用UDP实现简单的聊天功能
- Socket UDP 简单聊天的实现
- UDP广播与多播简单实现
- UDP广播与多播简单实现
- Java UDP 多用户 组播 聊天程序
- 一个UDP的聊天
- java网络编程: UDP 广播与多播的实现
- java网络编程: UDP 广播与多播的实现
- Android焦点研究
- 协同过滤(转载)
- 排序算法二之插入排序
- 最基本的排序
- Davinci V4L2 FBDev
- 一个UDP(多播)局域聊天的简单实现 (JAVA)
- 在SQL中怎么样将一个表的的多条记录插入到另一个表中
- 简单的获取服务器时间程序(UNIX网络编程)
- 开源 免费 java CMS - FreeCMS1.2-标签 mailList
- 从Slice_Header学习H.264(三.1)--相关细节之 POC的计算
- Java HIVE 使用Jdbc连接Hive
- These are broadcasts whose data is held by the system after being finished, so that clients can quic
- C++中的const
- jquery特效之图片轮播