DatagramSocket sock = new DatagramSocket(){} sock.connect(addr,9090);//並不創建鏈接 //接收 byte[] data=...; DatagramPacket packet = new DatagramPacket(data, data.length); sock.send(packet); //發送 byte[] buffer = new byte[1024]; DatagramPacket resp = new DatagramPacket(buffer, buffer.length); sock.receive(resp); //接收和發送都是經過DatagramPacket實現的
DatagramSocket ds = new DatagramSocket(9090); for( ; ; ){ //接收 byte[] buffer = new buffer[1024]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); ds.receive(packet); //發送 byte[] data = ...; packet.setData(data); ds.send(packet); }
TCPClient.javajava
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.nio.charset.StandardCharsets; public class UDPClient { public static void main(String[] args) throws Exception{ InetAddress addr = InetAddress.getLoopbackAddress(); try(DatagramSocket sock = new DatagramSocket()){ sock.connect(addr,9090); byte[] data = "time".getBytes(StandardCharsets.UTF_8); DatagramPacket packet = new DatagramPacket(data,data.length); sock.send(packet); System.out.println("Data was sent"); Thread.sleep(1000); byte[] buffer = new byte[1024]; DatagramPacket resp = new DatagramPacket(buffer,buffer.length); sock.receive(resp); byte[] respData = resp.getData(); String respText = new String(respData,0,resp.getLength()); System.out.println("Response:"+respText); } } }
TCPServer.java編程
package com.crazy; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; public class UDPServer { public LocalDateTime currentTime(){ return LocalDateTime.now(); } public static void main(String[] args) throws Exception{ DatagramSocket ds = new DatagramSocket(9090); System.out.println("UDP server ready"); for(;;){ byte[] buffer = new byte[1024]; DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length); ds.receive(packet); byte[] data = packet.getData(); String s = new String(data, StandardCharsets.UTF_8); System.out.println("Pack received from : "+packet.getSocketAddress()); String resp = LocalDateTime.now().toString(); packet.setData(resp.getBytes(StandardCharsets.UTF_8)); ds.send(packet); } } }
先運行server
再運行client
服務器
UDP編程模型:oop