通过UDP传输字节缓冲区

3

你能够提供通过UDP数据报在两个Java类之间传输字节缓冲区的示例吗?

2个回答

4

这样行吗?

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class Server {
public static void main(String[] args) throws IOException { // 创建DatagramSocket实例 DatagramSocket socket = new DatagramSocket(new InetSocketAddress(5000)); // 接收消息 byte[] message = new byte[512]; DatagramPacket packet = new DatagramPacket(message, message.length); socket.receive(packet); // 输出消息 System.out.println(new String(packet.getData(), packet.getOffset(), packet.getLength())); } }
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class Client {
public static void main(String[] args) throws IOException { // 创建DatagramSocket实例并连接到指定地址和端口 DatagramSocket socket = new DatagramSocket(); socket.connect(new InetSocketAddress(5000)); // 发送消息 byte[] message = "Oh Hai!".getBytes(); DatagramPacket packet = new DatagramPacket(message, message.length); socket.send(packet); } }

0

@none

DatagramSocket类确实需要改进,DatagramChannel对于客户端来说稍微好一些,但对于服务器编程来说有些困惑。例如:

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.DatagramChannel;
public class Client {
public static void main(String[] args) throws IOException { DatagramChannel channel = DatagramChannel.open(); ByteBuffer buffer = ByteBuffer.wrap("Oh Hai!".getBytes()); channel.send(buffer, new InetSocketAddress("localhost", 5000)); } }

我认为JSR-203会更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接