通过UDP传输字节缓冲区
时间:2020-03-05 18:57:56 来源:igfitidea点击:
我们能否提供通过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())); } }
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 socket = new DatagramSocket(); socket.connect(new InetSocketAddress(5000)); byte[] message = "Oh Hai!".getBytes(); DatagramPacket packet = new DatagramPacket(message, message.length); socket.send(packet); } }
回答
@没有
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我说