您好,我写了一个程序,可以将 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 中打扰太多,但会损坏图像。
我该如何解决这个问题?
谢谢!