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

📄 multicastconnection.java

📁 java learn PPT java learn PPT java learn PPT java learn PPT
💻 JAVA
字号:
package magic.net;

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

public class MulticastConnection
{
  public static final int DEFAULT_PORT = 1234;

  // 连接、发送和接收消息用的多点传送
  protected MulticastSocket mcSocket;

  // 属于多点传送群中的一个IP地址
  protected InetAddress groupAddress;

  // 连接用的端口号
  protected int port;

  // 发送和接收消息的IP 报
  protected DatagramPacket dataPacket;

  // 接收和发送数据报用的 byte数组
  protected byte[] data;

  // 一个数据报可以容纳的字节的最大数目
  protected final int PACKET_SIZE = 1024;

  // 用给定的地址和端口创建一个新的MulticastConnection对象
  public MulticastConnection(String address, int portNo) throws Exception
  {
    // 将给定的地址解析为有效的IP地址
    groupAddress = InetAddress.getByName(address);

    port = portNo;

    // 取保端口号有效
    mcSocket = (port > 0) ? new MulticastSocket(port) :
        new MulticastSocket(DEFAULT_PORT);

    // 将socket连接到IP地址群
    mcSocket.joinGroup(groupAddress);

    data = null;
  }

  // 试图从群中断开
  public void disconnect()
  {
    if (mcSocket == null)
      return;

    try {
      mcSocket.leaveGroup(groupAddress);
    }
    catch (IOException e) {
      // 在这里处理错误信息...
    }
  }

  // 尝试从群中接收一个数据报
  public String recv()
  {
    data = new byte[PACKET_SIZE];
    dataPacket = new DatagramPacket(data, data.length);

    try {
      mcSocket.receive(dataPacket);
    }
    catch (IOException e) {
      return "";
    }

    // 将数据报中的原始字节转化为一个有效的String对象
    return new String(dataPacket.getData()).trim();
  }

  // 尝试将指定的String对象作为一个IP数据报发送出去
  public boolean send(String msg)
  {
    dataPacket = new DatagramPacket(
        msg.getBytes(), msg.length(), groupAddress, port);

    try {
      mcSocket.send(dataPacket);
    }
    catch (IOException e) {
      return false;
    }

    return true;
  }

} // MulticastConnection

⌨️ 快捷键说明

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