我正在尝试对我的程序进行编码,以便缓冲的阅读器从我的tcp客户端获取readLine()中的内容,但是一旦程序执行就会出现此错误
Mar 31, 2010 11:03:36 PM deswash.DESWashView$5 run
SEVERE: null
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at deswash.DESWashView$5.run(DESWashView.java:448)
以下代码中的car = in.readLine()会引发错误
public void getCar(){
Thread gettingCars = new Thread(){
@Override
public void run(){
try {
car = in.readLine();
if(!(car.equals(null))){
StringTokenizer st = new StringTokenizer(car,";");
int carTime = Integer.parseInt(st.nextToken());
finTime.setText(""+((Integer.parseInt(currentTime.getText()))+washTime));
currentTime.setText(""+carTime);
eventTextArea.append(""+car+"\n");
}
} catch (IOException ex) {
Logger.getLogger(DESWashView.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
gettingCars.start();
doOnce=false;
}
答案 0 :(得分:0)
来自MSDN:
WSAECONNABORTED (10053)
软件导致连接中止连接中止是在主机内部引起的。该软件导致连接中止,因为套接字队列上没有空间,并且套接字无法接收更多连接。
WinSock说明:本地网络系统中止连接时可能会发生错误。如果WinSock在数据重新传输失败后中止已建立的连接(接收方从不确认数据流套接字上发送的数据),则会发生这种情况。
TCP / IP方案:如果本地系统没有收到发送数据的(ACK)动态,则连接将超时。如果(FIN)ish TCP数据包没有被确认,它也会超时(即使FIN被确认,如果没有返回FIN,它最终会超时)。
WindowsXP似乎发生了更多,似乎也可能与Windows防火墙设置有关。无论如何,重点是中止源自本地机器。
这是一个愚蠢的措辞。