Java,EoT符号在复制时保存在txt文件中(Java,TCP,socket)

时间:2017-11-23 19:03:21

标签: java sockets tcp eot

您好我写了一个程序,它将TCP协议发送到服务器,或者可以用作接收协议的服务器。

这是发射器方法:

public void tell(String msg, Actor sender) {
    InetAddress addr;
    ServerSocket svSocket;
    try {
        addr = InetAddress.getLocalHost();
        Socket sock = new Socket(addr, port);
        PrintStream ps = new PrintStream(sock.getOutputStream());
        ps.println(msg);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

这是接收方法:

public void run() {
    Printer printer = new Printer();
    ServerSocket svSocket;
    try {
        svSocket = new ServerSocket(this.port);
        Socket sock = new Socket();
        String message = "";
        while(!message.equals("\u0004")){
            sock = svSocket.accept();
            InputStreamReader reader = new InputStreamReader(sock.getInputStream());
            BufferedReader br = new BufferedReader(reader);
            message = br.readLine();
            printer.tell(message, null);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

}

它可以发送简单的消息并打印出来,但是只要我想通过它发送文件。命令行:

启动jar,使用端口5555创建服务器,使用localhost作为地址,copy.txt创建要创建的文件。

java -jar foo.jar -l 5555 > copy.txt

启动jar,创建目标端口5555的客户端,localhost作为地址,myFile.txt发送文件。

 java -jar foo.jar localhost 5555 < myFile.txt

一切正常,但它会在文件的最末端保存一个EoT符号。它在txts中并没有太多麻烦,但它会破坏图像。

我该如何解决这个问题?

谢谢!

0 个答案:

没有答案