我建立一个MulticastSocket之后,通过socket发送数据之后再接收数据,不成功,接收时被阻塞。为何呢?理论上由于有数据,那么应该不会被阻塞才对啊。
代码如下:
package recmail.multiservice;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;public class MultiSender {
    public static final int PORT = 8888;
    public static final String ADDR = "224.0.0.8";    private MulticastSocket sock;    private InetAddress netAddr;    public MultiSender() {
        try {
            // 组播地址
            netAddr = InetAddress.getByName(ADDR);
            sock = new MulticastSocket(PORT);
            sock.joinGroup(netAddr);
        } catch (UnknownHostException ex) {} catch (IOException ex) {}
    }    public void send(byte[] b) {
        DatagramPacket dp = new DatagramPacket(b, 0, b.length, netAddr, PORT);
        try {
            sock.send(dp);
            System.out.println("sent");
            byte[] buf = new byte[1024];
            DatagramPacket rcv = new DatagramPacket(buf, buf.length);
            sock.receive(rcv);
            System.out.println("receive:" + new String(rcv.getData()));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        MultiSender sender = new MultiSender();
        sender.send("yhaha".getBytes());
    }
}

解决方案 »

  1.   

    public   void   send(byte[]   b)   {
                    DatagramPacket   dp   =   new   DatagramPacket(b,   0,   b.length,   netAddr,   PORT); 
    你可以改成
    public   void   send(byte[]   b)   {
                    DatagramPacket   dp   =   new   DatagramPacket(b,   b.length,   netAddr,   PORT);