我有兩個(客戶端 - 服務(wù)器 - 客戶端)系統(tǒng)。第一個使用 TCP,第二個使用 UDP。有趣的是,當(dāng)傳輸大小為 5-6 mb 的文件時,我使用 TCP 的系統(tǒng)比使用 UDP 的系統(tǒng)快。問題是因為我的編碼錯誤還是會發(fā)生?TCP客戶端 try { socket = new Socket("localhost", 7755); } catch (Exception e) { System.out.println(e.getMessage().toString()); } out = new PrintWriter(socket.getOutputStream(), true); int i = 0; while (file.hasNext()) { String line = file.nextLine(); if (!line.isEmpty()) { out.println(line); } i++; }TCP服務(wù)器 try { serverSocketA = new ServerSocket(7755); serverSocketB = new ServerSocket(7760); } catch (Exception e) { System.out.println("Port error!"); } System.out.println("Server is ready..."); clientSocketA = serverSocketA.accept(); clientSocketB = serverSocketB.accept(); PrintWriter out = new PrintWriter(clientSocketB.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocketA.getInputStream())); while((dataFromClientA = in.readLine()) != null) { out.println(dataFromClientA); }UDP服務(wù)器private static byte[] buf = new byte[6];static Scanner file;public static void main(String[] args) throws IOException{ long startTime = System.currentTimeMillis(); socket = new DatagramSocket(); address = InetAddress.getByName("localhost"); file = new Scanner(new File("sentfile.txt")); DatagramPacket packet; while (file.hasNext()) { String line = file.nextLine(); if (!line.isEmpty()) { buf = line.getBytes(); packet = new DatagramPacket(buf, buf.length, address, 7765); socket.send(packet); } }我只是添加了 client1 和服務(wù)器代碼,其余的類似。可能是什么原因?
2 回答

波斯汪
TA貢獻1811條經(jīng)驗 獲得超4個贊
TCP 已經(jīng)由世界上一些最偉大的網(wǎng)絡(luò)專家進行了大量優(yōu)化。它專為盡可能快速有效地通過 IP 網(wǎng)絡(luò)發(fā)送數(shù)據(jù)流而設(shè)計。它與內(nèi)核相關(guān)聯(lián),并且在大多數(shù)現(xiàn)代平臺上作為一個單元進行了大量優(yōu)化。除非它做了一些你不需要的事情,否則你不會超越它,并且你可以從不做那件事中獲得顯著的好處。
添加回答
舉報
0/150
提交
取消