无法使用套接字Java退出发送文件中的接收文件循环
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了无法使用套接字Java退出发送文件中的接收文件循环,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1411字,纯文字阅读大概需要3分钟。
内容图文
![无法使用套接字Java退出发送文件中的接收文件循环](/upload/InfoBanner/zyjiaocheng/692/f79760d75e8244bd96850277882578f8.jpg)
我正在开发客户端服务器应用程序.从客户端,我将文件发送到服务器.
这是我关于服务器读取文件的代码:
private void readfile() throws Exception{
String filename="data.xml";
FileOutputStream fos = new FileOutputStream(filename);
BufferedOutputStream out = new BufferedOutputStream(fos);
BufferedReader buff_read = new BufferedReader(new InputStreamReader(input,"UTF-8"));
byte[] buffer=new byte[1024];
String line;
int count;
while((count=input.read(buffer))>0){
fos.write(buffer,0,count);
fos.flush();
}
System.out.println("het");
fos.close();
}
但是我无法摆脱while循环.控制台屏幕上显示字符串“ het” neurner,而我可以通过记事本读取文件data.xml表示文件发送成功.
您能帮我解决这个问题吗?
对不起,我可怜的英语.
解决方法:
我假设您代码中的输入是来自套接字的输入流.
您没有告诉我们如何将文件发送到套接字,这很重要,但是我想您在’客户端’端有类似的东西,可以在其中读取文件,并使用byte []缓冲区发送客户端的OutputStream上的数据.
我还猜测您不会在客户端上关闭OutputStream.
从套接字InputStream读取时,只有客户端关闭OutputStream时,您才读取(…)并获得-1.我假设客户端不执行此操作,因此您的while循环正在等待InputStream关闭.
因此,问题可能出在流程的客户端,即发送文件的代码.它已成功发送了数据,但尚未向服务器指示传输已完成,因此服务器正在等待.
如果系统要求在文件发送后继续使用套接字,则客户端无法关闭套接字,并且您将需要实现协议,以便服务器知道客户端何时完成.例如,客户端可以先发送4个字节(整数)来指示要发送的文件中的字节数,然后服务器可以解释这些字节,然后从流中读取该字节数.
内容总结
以上是互联网集市为您收集整理的无法使用套接字Java退出发送文件中的接收文件循环全部内容,希望文章能够帮你解决无法使用套接字Java退出发送文件中的接收文件循环所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。