⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multicastdatagramsenddemo.java

📁 java程序设计教程的源码
💻 JAVA
字号:
//【例11-11】  组播发送程序(服务器)。
//程序清单11-11:  MulticastDatagramSendDemo.java
package datagram;

import java.util.*;
import java.io.*;
import java.net.*;

public class MulticastDatagramSendDemo {// 主类
	public static void main(String[] args) throws java.io.IOException {
		new MulticastDatagramSendThread().start();// 创建并启动发送数据报的线程
	}
}

// 发送数据报的线程
class MulticastDatagramSendThread extends Thread {
	private DatagramSocket datagramSocket = null;// 数据报套接字引用

	private BufferedReader brin = null;// 缓存字符输入流引用

	private boolean endflag = true;// 读文件结束标志

	public MulticastDatagramSendThread() throws IOException {
		super("MulticastDatagramSendThread");
		datagramSocket = new DatagramSocket();// 创建数据报套接字
		try {// 创建来自"Message.txt"文件的缓存字符输入流
			brin = new BufferedReader(new FileReader("Message.txt"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	public void run() {// 发送数据报线程的线程体
		System.out.println("组播服务端发送进程已启动...");
		while (endflag) {
			try {
				byte[] bytebuf = new byte[200];
				String message = null;
				if (brin == null)
					message = new Date().toString();// 取系统日期
				else
					message = getMessage();// 读入文本的内容
				bytebuf = message.getBytes();// 字符串转换为字节数组
				// 以指定D类地址和端口号创建发送数据报
				DatagramPacket packet = new DatagramPacket(bytebuf,
						bytebuf.length, InetAddress.getByName("225.8.8.8"),
						MulticastDatagramReceiveDemo.PORT);
				// 发送数据报
				datagramSocket.send(packet);
				System.out.println("组播服务端发送进程已发送数据包中的数据:"
						+ new String(packet.getData()));
				try {// 每隔1秒左右发送一条信息
					sleep((long) (Math.random() * 1000));
				} catch (InterruptedException e) {
				}
			} catch (IOException e) {
				e.printStackTrace();
				endflag = false;
			}
		}
		datagramSocket.close();// 关闭数据报套接字
	}

	private String getMessage() {// 读取脚本文件数据
		String message = null;
		try {// 读入文件内容
			if ((message = brin.readLine()) == null) {
				brin.close();
				endflag = false; // 结束标志置为"false"时则结束发送循环
				message = "信息发送完毕!";
			}
		} catch (IOException e) {
			message = "发送的数据报出错!";
		}
		return message;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -