문제
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 내가 말하다
제휴하지 않습니다 StackOverflow