JAVA:通过socket传输文件

JAVA:通过socket传输文件,java,stream,streaming,filestream,Java,Stream,Streaming,Filestream,我在做什么: 我正在编写一个通过套接字连接进行客户机-服务器文件传输的程序。 服务器通过缓冲ObjectOutputStream将文件发送到客户端计算机。 通过逐字节发送来发送文件 我想做什么: 能够从两端发送暂停/取消信号 问题: 由于文件是逐字节发送的,我不知道如何发送暂停/取消 从服务器到客户端的信号。请帮忙 其他信息: 如果我从服务器向客户端发送一个整数/a字节,以指示 传输应暂停或取消,这会使客户端计算机混乱 可以将这些字节作为文件的一部分读取 我不会使用ObjectOutptStre

我在做什么: 我正在编写一个通过套接字连接进行客户机-服务器文件传输的程序。 服务器通过缓冲
ObjectOutputStream
将文件发送到客户端计算机。 通过逐字节发送来发送文件

我想做什么: 能够从两端发送暂停/取消信号

问题: 由于文件是逐字节发送的,我不知道如何发送暂停/取消 从服务器到客户端的信号。请帮忙

其他信息: 如果我从服务器向客户端发送一个整数/a字节,以指示 传输应暂停或取消,这会使客户端计算机混乱
可以将这些字节作为文件的一部分读取

我不会使用ObjectOutptStream,因为这可能效率低下。一次发送一个字节是非常低效的

我将使用DataOutputStream


在任何情况下,解决方案都差不多。发送方可以通过不发送数据来暂停。接收者可以通过不读取数据而暂停,这将导致发送者阻塞。

添加相关代码您尝试了什么?@THANGA这是我的问题的一部分,这里的主代码会混淆。您能给我一些建议吗?它是这样初始化的
ObjectOutputStream os=new ObjectOutputStream(new BufferedOutputStream(…)
它仍然效率低下吗?ObjectOutputStream已经被缓冲了。发送一个字节需要超过70个字节,每个额外的字节需要大约10个字节。如果您使用DataOutputStream,您可以在一次调用中使用
byte[]
块,这将至少快100倍,小10倍。是否有
OutputStream
我只写字节,它会自动将其写入缓冲区,并且每当缓冲区满时,它就会发送缓冲的字节?好的,除了BufferedOutputStream和ObjectOutputStream之外,JDK中的每个OutputStream都会执行此操作我使用DataOutputStream作为writeUTF()之类的方法来发送字符串,如name和Wriett()或writeLong()来发送长度。我仍然不明白,如果我使用“DataOutputStream”并写入字节(而不是作为字节[]数组,通过发送一个字节接一个字节),它仍然会被有效地缓冲吗?还有一件事,我如何向客户发送取消传输的信号?(问如何暂停传输是愚蠢的)