socket的bufferedwriter.write()和bufferedwriter.flush()奇怪问题请教
socket的bufferedwriter.write()和bufferedwriter.flush()奇怪问题请教,谢谢
原代码如下:
....................
while(true)
{
try
{
socket = new Socket(InetAddress.getByName(IP), port);
bufferedwriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
..........
while(true)
{
..........
bufferedwriter.write(.......);
bufferedwriter.flush();
if(.......) break;
}
socket.close();
bufferedwriter.close();
}
catch(Exception exception)
{
System.out.printl(exception);
}
}
.........................
介绍
1 程序在一般情况下运行正常
2 代码中...... 部分绝对正确
3 对方的端口(C编写)在10分钟之内没有数据到达时会自动close,然后重新初始化到listen状态
奇怪的问题
1 当数据传送空闲10几分钟后,又重新得到一个新的数据A开始发送(此时对方已经close后再恢复到listen状态),这一个数据A就送不过去了,而且也没有捕获到任何异常!!!!
2 当紧跟着数据A的第二个数据B开始发送时,这个时候就捕获到了异常,然后程序重新连接,然后一切又都正常了
异常提示:java.net.SocketException: Connection aborted by peer: socket write error
3 每次都是这样,第一个发不过去,到第二个才开始捕获到异常后重新连接再发送就正常了
请教专家高手,这是什么原因?该怎么解决?
谢谢