工具1:Eclipse
工具2:IntelliJ IDEA
Java工程的目錄結構(基於IntelliJ IDEA)
例1.1:接收方,因為接收到的數據是字節流,為了方便,這里是基於Apache commons IO,將字節流讀到一個文本文檔中。
1 import org.apache.commons.io.FileUtils; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.net.DatagramPacket; 6 import java.net.DatagramSocket; 7 8 public class Receiver { 9 10 public static void main(String[] args) throws IOException { 11 DatagramSocket you = new DatagramSocket(6666); 12 byte[] buffer = new byte[1024 * 8]; 13 DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length); 14 you.receive(datagramPacket); 15 FileUtils.writeByteArrayToFile(new File("postcard.txt"), datagramPacket.getData(), 0, datagramPacket.getLength()); 16 System.out.println(FileUtils.readFileToString(new File("postcard.txt"), "UTF-8")); 17 you.close(); 18 } 19 }
Java工程的目錄結構(基於Eclipse)
例1.2:發送方,發送一個名為postcard的文本文檔。因為傳輸的是字節流,所以需要將文本文檔轉換為字節數組,為了方便,這里是基於Apache commons IO,將文本文檔的內容讀到一個字節數組中。
1 import java.io.File; 2 import java.io.IOException; 3 import java.net.DatagramPacket; 4 import java.net.DatagramSocket; 5 import java.net.InetSocketAddress; 6 7 import org.apache.commons.io.FileUtils; 8 9 public class Sender { 10 11 public static void main(String[] args) throws IOException { 12 DatagramSocket i = new DatagramSocket(8888); 13 byte[] buffer = FileUtils.readFileToByteArray(new File("postcard.txt")); 14 DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length, new InetSocketAddress("localhost", 6666)); 15 i.send(datagramPacket); 16 i.close(); 17 18 System.out.println("I sent you a postcard."); 19 } 20 }
先運行接收方,再運行發送方。如果都能順利運行,接收方的控制台輸出接收到的內容。例如我的是:
I miss you.