我有两个(客户端 - 服务器 - 客户端)系统。第一个使用 TCP,第二个使用 UDP。有趣的是,当传输大小为 5-6 mb 的文件时,我使用 TCP 的系统比使用 UDP 的系统快。问题是因为我的编码错误还是会发生?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服务器 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服务器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 和服务器代码,其余的类似。可能是什么原因?
2 回答
波斯汪
TA贡献1811条经验 获得超4个赞
TCP 已经由世界上一些最伟大的网络专家进行了大量优化。它专为尽可能快速有效地通过 IP 网络发送数据流而设计。它与内核相关联,并且在大多数现代平台上作为一个单元进行了大量优化。除非它做了一些你不需要的事情,否则你不会超越它,并且你可以从不做那件事中获得显着的好处。
添加回答
举报
0/150
提交
取消