大家好,我用Java实现了一个服务器客户端程序,这样客户端就可以从服务器下载文件。
但问题是我想在文件下载之前在客户端和服务器之间交换一些消息(字符串)。 我在 JAVA 中用于在它们之间交换字符串的任何东西都能够在它们之间交换字符串,但文件无法正确下载。我不知道为什么。
下载文件的客户端代码:
byte[] b = new byte[1024];
int len = 0;
long bytcount = 1024;
File fp = new File("/home/luv/Desktop/LUVSAXENA_IT.docx");
RandomAccessFile ra=new RandomAccessFile(fp,"rw");
ra.seek(0);
InputStream i = sock.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(i));
InputStream is = sock.getInputStream();
while ((len = is.read(b, 0, 1024)) != -1) {
System.out.println("len"+len+"\n");
bytcount = bytcount + 1024;
//decrypt
ra.write(b, 0, len);
}
is.close();
ra.close();
sock.close();
发送文件的服务器代码:
byte[] buf = new byte[1024];
OutputStream os = sock.getOutputStream();
BufferedOutputStream out = new BufferedOutputStream(os, 1024);
File folder = new File("/home/luv/NetBeansProjects/Shared/");
File[] listoffiles=folder.listFiles();
String s;
int i=0;
File fp = new File("/home/luv/NetBeansProjects/Shared/LUVSAXENA_IT.docx");
RandomAccessFile ra = new RandomAccessFile(fp,"r");
long bytecount=1024;
while((i=ra.read(buf, 0, 1024)) != -1)
{
bytecount += 1024;
out.write(buf, 0, i);
out.flush();
}
sock.shutdownOutput();
out.close();
ra.close();
sock.close();
在下载文件之前,如何在客户端和服务器之间安全地交换字符串,以便在下载文件之后可以安全地下载文件。
提前致谢
最佳答案
创建连接的方式是写入原始数据但读取字符(流与读取器/写入器)。
我建议使用 ObjectInputStream
/ObjectOutputStream
或对文件使用 Base64 编码,然后使用 Reader
/作者
.
您还必须自己管理如何将字符串与数据分开。
关于java - 下载文件之前通过套接字在客户端和服务器之间交换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376727/