Android Open Source - netlib M D N S Receiver Thread






From Project

Back to project page netlib.

License

The source code is released under:

Apache License

If you think the Android project netlib listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2011 David Simmons//from  w w  w  . j  a v a2  s. c  o  m
 * http://cafbit.com/
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.cafbit.netlib;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.util.Random;

import com.cafbit.netlib.dns.DNSMessage;

public class MDNSReceiverThread extends MulticastReceiverThread {

    // the standard mDNS multicast address and port number
    private static final byte[] MDNS_ADDR =
        new byte[] {(byte) 224,(byte) 0,(byte) 0,(byte) 251};
    private static final int MDNS_PORT = 5353;
    
    private Random random = new Random(System.currentTimeMillis());

    public MDNSReceiverThread(NetworkManagerThread networkManager) throws IOException {
        super(networkManager, MDNS_ADDR, MDNS_PORT);
    }

    @Override
    protected void handlePacket(DatagramPacket datagramPacket) {
        /*
        Log.v(TAG, String.format("received: offset=0x%04X (%d) length=0x%04X (%d)", datagramPacket.getOffset(), datagramPacket.getOffset(), datagramPacket.getLength(), datagramPacket.getLength()));
        Log.v(TAG, Util.hexDump(datagramPacket.getData(), datagramPacket.getOffset(), datagramPacket.getLength()));
        */
        
        // parse the DNS packet
        DNSMessage message = new DNSMessage(datagramPacket.getData(), datagramPacket.getOffset(), datagramPacket.getLength());

        // summarize the packet contents
        PacketEntry packetEntry = new MDNSPacketEntry(datagramPacket, getSocket(), message);
        
        // send the packet entry to the network manager
        System.out.println("MDNSReceiverThread: SENDING PACKETENTRY");
        getNetworkManagerThread().getHandler().sendCommand(packetEntry);
    }

    public void sendQuery(String name) throws IOException {
        byte[] requestData = (new DNSMessage(name)).serialize();
        DatagramPacket request =
            new DatagramPacket(requestData, requestData.length, InetAddress.getByAddress(MDNS_ADDR), MDNS_PORT);
        send(request);
    }
}




Java Source Code List

com.cafbit.netlib.AbstractDatagramManagerThread.java
com.cafbit.netlib.Address.java
com.cafbit.netlib.InterfaceInfo.java
com.cafbit.netlib.MDNSPacketEntry.java
com.cafbit.netlib.MDNSReceiverThread.java
com.cafbit.netlib.MulticastReceiverThread.java
com.cafbit.netlib.NetUtil.java
com.cafbit.netlib.NetworkManagerThread.java
com.cafbit.netlib.PacketEntry.java
com.cafbit.netlib.ReceiverThread.java
com.cafbit.netlib.StubPacketEntry.java
com.cafbit.netlib.Util.java
com.cafbit.netlib.dns.DNSAnswer.java
com.cafbit.netlib.dns.DNSBuffer.java
com.cafbit.netlib.dns.DNSComponent.java
com.cafbit.netlib.dns.DNSException.java
com.cafbit.netlib.dns.DNSMessage.java
com.cafbit.netlib.dns.DNSQuestion.java
com.cafbit.netlib.ipc.CommandHandler.java
com.cafbit.netlib.ipc.CommandListener.java
com.cafbit.netlib.ipc.Command.java
com.cafbit.netlib.ipc.DatagramCommand.java
com.cafbit.netlib.ipc.ErrorCommand.java
com.cafbit.netlib.ipc.QuitCommand.java