📄 multicastserverthread.java
字号:
import java.io.*;
import java.net.*;
import java.util.*;
public class MulticastServerThread extends QuoteServerThread
//从QuoteServerThread继承得到新的服务器线程类MulticastServerThread
{
private long FIVE_SECOND=5000; //定义常量,5秒钟
public MulticastServerThread(String name) throws IOException
{
super("MulticastServerThread");
//调用父类,也就是QuoteServerThread的构造函数
}
public void run() //重写父类的线程主体
{
while(moreQuotes) {
//根据标志变量判断是否继续循环
try{
byte[] buf=new byte[256];
//创建缓冲区
String dString=null;
if(in==null) dString=new Date().toString();
//如果初始化的时候打开文件失败了
//则使用日期作为要传送的字符串
else dString=getNextQuote();
//否则调用成员函数从文件中读出字符串
buf=dString.getByte();
//把String转换成字节数组,以便传送send it
InetAddress group=InetAddress.getByName("230.0.0.1");
//得到230.0.0.1的地址信息
DatagramPacket packet=new DatagramPacket(buf,buf.length,group,4446);
//根据缓冲区,广播地址,和端口号创建DatagramPacket对象
socket.send(packet); //发送该Packet
try{
sleep((long)(Math.random()*FIVE_SECONDS));
//随机等待一段时间,0~5秒之间
}catch(InterruptedException e) { } //异常处理
}catch(IOException e){ //异常处理
e.printStackTrace( ); //打印错误栈
moreQuotes=false; //置结束循环标志
}
}
socket.close( ); //关闭广播套接口
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -