3

您能否提供一个通过 UDP 数据报在两个 java 类之间传输的字节缓冲区的示例?

4

2 回答 2

4

这个怎么样 ?

导入 java.io.IOException;
导入 java.net.DatagramPacket;
导入 java.net.DatagramSocket;
导入 java.net.InetSocketAddress;


公共类服务器{

    公共静态 void main(String[] args) 抛出 IOException {
        DatagramSocket socket = new DatagramSocket(new InetSocketAddress(5000));
        字节[]消息=新字节[512];
        DatagramPacket packet = new DatagramPacket(message, message.length);
        socket.receive(数据包);
        System.out.println(new String(packet.getData(), packet.getOffset(), packet.getLength()));
    }
}
导入 java.io.IOException;
导入 java.net.DatagramPacket;
导入 java.net.DatagramSocket;
导入 java.net.InetSocketAddress;


公共类客户{

    公共静态 void main(String[] args) 抛出 IOException {
        DatagramSocket 套接字 = 新的 DatagramSocket();
        socket.connect(新 InetSocketAddress(5000));
        byte[] message = "Oh Hai!".getBytes();
        DatagramPacket packet = new DatagramPacket(message, message.length);
        套接字.发送(数据包);
    }
}
于 2008-09-17T04:44:13.417 回答
0

@没有任何

DatagramSocket 类确实需要改进,DatagramChannel 对客户端稍微好一点,但对服务器编程来说却很混乱。例如:

导入 java.io.IOException;
导入 java.net.InetSocketAddress;
导入 java.nio.ByteBuffer;
导入 java.nio.channels.DatagramChannel;


公共类客户{

    公共静态 void main(String[] args) 抛出 IOException {
        DatagramChannel 通道 = DatagramChannel.open();
        ByteBuffer buffer = ByteBuffer.wrap("Oh Hai!".getBytes());
        channel.send(buffer, new InetSocketAddress("localhost", 5000));
    }
}

带上JSR-203我说

于 2008-09-17T04:57:05.400 回答