java - 下载文件之前通过套接字在客户端和服务器之间交换字符串

标签 java sockets

大家好,我用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/

相关文章:

java - 安全地将参数从 servlet 传递到 EJB?

java - 使用 0 值调用 setSoLinger 与根本不启用 soLinger 有什么区别?

c - 套接字客户端/服务器聊天(线程问题)

sockets - TCP 连接的 Recv-Q 高的原因是什么?

java - LibGDX 游戏突然卡顿了?

java - 从字符串中过滤掉 UUId 编号

java - 使用客户端阻塞的套接字进行客户端与服务器通信

PHP - 有人可以为我解释 pfsockopen 函数吗? (持久套接字)

java - Spring Data Rest执行查询但返回500内部服务器错误

java - 似乎无法将 int 转换为字符串并运行我的程序,因此它输出 330