0

您好,我写了一个程序,可以将 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 符号。它不会在 txt 中打扰太多,但会损坏图像。

我该如何解决这个问题?

谢谢!

4

0 回答 0