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

📄 udpconnection.java

📁 封装了SQL、Socket、WAP、MIME等功能的通用组件
💻 JAVA
字号:
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: www.lazybug.com</p>
 * @author 刘学
 * @version 1.0
 */
package org.lazybug.net;

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

public class UDPConnection extends Connection
{
    private int bufferLength = 0;
    public int timeout = 0;
    public DatagramSocket socket;

    public UDPConnection(int nPageNum, int nPageSize) throws SocketException
    {
        super(nPageNum, nPageSize);
        bufferLength = this.pageNum * this.pageSize;
        super.buffer = new byte[bufferLength];
        socket = new DatagramSocket();
    }

    public UDPConnection(int nPageNum, int nPageSize, int port) throws SocketException
    {
        super(nPageNum, nPageSize);
        bufferLength = this.pageNum * this.pageSize;
        super.buffer = new byte[bufferLength];
        this.port = port;
        socket = new DatagramSocket(port);
    }

    public int getMaxPageLength()
    {
        return this.pageSize;
    }

    public int getBufferLength()
    {
        return bufferLength;
    }
    /**
     * 接收数据
     * @return 接收数据是否成功
     */
    public int onReceiveFrom(Packet packet) throws IOException
    {
        DatagramPacket dp = new DatagramPacket(getBuffer(),
                                               packet.buffer_offset,
                                               pageSize);
        if( timeout > 0 ) socket.setSoTimeout(timeout);
        socket.receive( dp );
        Tools.copyByteArray(dp.getAddress().getAddress(), packet.ip);
        packet.port = dp.getPort();//设置端口
        return dp.getLength();
    }

    public int onSendTo(Packet packet) throws IOException
    {
        DatagramPacket dp = new DatagramPacket( buffer,
                                                packet.buffer_offset,
                                                packet.getLength(),
                                                InetAddress.getByAddress(packet.ip),
                                                packet.port);
        socket.send(dp);
        return dp.getLength();
    }

    public void close()
    {
        this.socket.close();
    }
}

⌨️ 快捷键说明

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