数据报数据包FTP应用程序



我使用UDP数据报协议编写了一个FTP应用程序,我需要客户端从文件中读取100个字符,并将其分为5个部分发送,每个部分20个字符,当我运行程序时,我会收到以下错误:CCD_ 1。我希望服务器将每一行分成五部分,但要相应地进行排序。这是我的代码:

import java.net.*;
import java.io.*;
public class FTPClient
{
    public static void main(String[] args)
    {
         final int SIZE=100;
         DatagramSocket skt= null;
         DatagramPacket pkt = null;
         BufferedReader read= null;
         int port = 3131;
         try
         {
             skt=new DatagramSocket(2121);
             read= new BufferedReader(new FileReader("input.txt"));
             String line = read.readLine();
             byte[] lineByte = new byte[SIZE];
             lineByte = line.getBytes();
             InetAddress add = InetAddress.getByName("localhost");
             for(int i=0;i<100;i+=20)
             {
                  pkt = new DatagramPacket(lineByte,i,20,add,port);
                  skt.send(pkt);
             }
         }
         catch(IOException e)
         {
             System.out.println(e.getMessage()); }
         finally
         {
             skt.close();
          // read.close();
         }
    }
}

您的代码在问题区域有注释。如果你在阅读了我的评论后仍然无法解决问题,只需添加一条评论,我就会解释更多

public static void main(String[] args) {
    final int SIZE = 100;
    DatagramSocket skt = null;
    DatagramPacket pkt = null;
    BufferedReader read = null;
    int port = 3131;
    try {
        skt = new DatagramSocket(2121);
        read = new BufferedReader(new FileReader("input.txt"));
        String line = read.readLine(); // how long is the line?
        byte[] lineByte = new byte[SIZE]; // this is a redundant assignment
        lineByte = line.getBytes(); // now the length of the lineBytes is "unknown"
        InetAddress add = InetAddress.getByName("localhost");
        for (int i = 0; i < 100; i += 20) { // you should check the length of lineBytes instead of 100
            pkt = new DatagramPacket(lineByte, i, 20, add, port);
            skt.send(pkt);
        }
    }
    catch (IOException e) {
        System.out.println(e.getMessage());
    }
    finally {
        skt.close();
        // read.close();
    }
}

最新更新