Java 使用UDP傳輸一個小文本文件


工具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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM