java - CodedOutputStream .flush() 导致连接被对等方重置:套接字写入错误
问题描述
我可以将字节写入我的编码输出流,但我无法刷新流。我在任何时候都没有关闭它,当我在遇到此错误后在流上调用 socket.isConnected 时,套接字返回 true。为什么会发生这种情况?
我尝试以多种不同的方式编写字节数组并在套接字上调用 keepAlive() 以强制流保持打开状态。
byte[] fullMessage = //contents of my array
System.out.println("SENDING");
os = CodedOutputStream.newInstance(ss.getOutputStream());
for(int i = 0; i < fullMessage.length; i++){
os.write(fullMessage[i]);
//System.out.println("SPACE LEFT: " + os.spaceLeft());
}
System.out.println("SIZE OF SENT MESSSAGE: " + os.getTotalBytesWritten());
System.out.println("FLUSHING");
try{
System.out.println("CONNECTED?: "+ss.isConnected());
os.flush();
ss.getOutputStream().flush(); //ss is my socket
}
catch(IOException e){
System.out.println(e.getMessage());
}
预期结果应该是没有消息的刷新,总是产生:对等方重置连接:套接字写入错误
解决方案
推荐阅读
- python - 查看使用 Heroku 和 S3 处理图像花费了太多时间
- c++ - 使用 cout 以某种格式打印数字(左对齐和右对齐)
- vb.net - 在 HTML 中使用 vb.net 每月播放一个视频
- jenkins - 来自 jenkins 的警告下一代插件 6.1.1 中使用了哪个版本的 Checkstyle?
- python - 根据另一列的值有条件地将渐变颜色应用于数据框单元格?
- mysql - 错误 1227 (42000):访问被拒绝;您需要(至少一个)在 SQL Workbench 中执行此操作的 SUPER 权限
- android - Android以编程方式更改可绘制纯色
- c# - 如何在文件C#中显示所有出现的特定单词
- css - Chrome,如何从 chrome Dev Tools 获取元素 css 样式 url()
- bash - 通过 ssh 使用 argjson 发送 jq