Java 通过UDP传输字节缓冲区

Java 通过UDP传输字节缓冲区,java,udp,datagram,Java,Udp,Datagram,您能提供一个通过UDP数据报在两个java类之间传输字节缓冲区的示例吗?这是怎么回事 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 IOExc

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

这是怎么回事

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 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())); } } 导入java.io.IOException; 导入java.net.DatagramPacket; 导入java.net.DatagramSocket; 导入java.net.InetSocketAddress; 公共类服务器{ 公共静态void main(字符串[]args)引发IOException{ DatagramSocket套接字=新DatagramSocket(新的InetSocketAddress(5000)); 字节[]消息=新字节[512]; DatagramPacket数据包=新的DatagramPacket(message,message.length); 套接字接收(数据包); System.out.println(新字符串(packet.getData(),packet.getOffset(),packet.getLength()); } } 导入java.io.IOException; 导入java.net.DatagramPacket; 导入java.net.DatagramSocket; 导入java.net.InetSocketAddress; 公共类客户端{ 公共静态void main(字符串[]args)引发IOException{ DatagramSocket套接字=新DatagramSocket(); socket.connect(新的InetSocketAddress(5000)); byte[]message=“Oh Hai!”.getBytes(); DatagramPacket数据包=新的DatagramPacket(message,message.length); socket.send(包); } } @没有

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)); } } 导入java.io.IOException; 导入java.net.InetSocketAddress; 导入java.nio.ByteBuffer; 导入java.nio.channels.DatagramChannel; 公共类客户端{ 公共静态void main(字符串[]args)引发IOException{ DatagramChannel=DatagramChannel.open(); ByteBuffer buffer=ByteBuffer.wrap(“Oh Hai!”.getBytes()); send(缓冲区,新的InetSocketAddress(“localhost”,5000)); } } 来吧,我说

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)); } }