您好我写了一个程序,它将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中并没有太多麻烦,但它会破坏图像。
我该如何解决这个问题?
谢谢!