[PublicFunction]接收数据 Exception:java.net.SocketException: Connection reset
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.io.DataInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at sun.nio.cs.StreamDecoder.read0(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at com.guiyangyaxun.isagsms.util.PublicFunction.recvByte(PublicFunction.
java:76)
at com.guiyangyaxun.isagsms.sms.ISAG_SMS_MOServerProessThread$ISAG_SMS_M
OReceiveThread.run(ISAG_SMS_MOServerProessThread.java:41)
at java.lang.Thread.run(Unknown Source)
[ISAG-SMS]MO连接(收)线程异常停止,异常原因:Connection reset
代码如下:public static StringBuffer recvByte(java.io.DataInputStream dataInStream)
throws Exception// 接受的数据
{
System.out.println("接收数据");
//BufferedReader d = new BufferedReader(new InputStreamReader(dataInStream, "UTF-8"));// 处理编码问题
Reader d = new InputStreamReader(dataInStream,"UTF-8");
StringBuffer receivedData = new StringBuffer();
try {
synchronized (dataInStream) {
int c;
while ((c = d.read()) != -1) {
receivedData.append((char) c);
System.out.println(c);
}
System.out.println(receivedData.toString());
}
} catch (Exception e) {
System.out
.println("[PublicFunction]接收数据 Exception:" + e.toString());
throw e;
}
return receivedData;
}怎么回事啊,模拟器测试可以的啦,怎么接到网关就不行了呢。异常出在while ((c = d.read()) != -1)这里,但没想明白是为什么?
解决方案 »
- 关于JApplet的问题求大神指点。。
- j2se、j2ee中的一系列时间问题
- java 开发的c/s 数据库程序中 建立存储过程问题
- 请大家推荐一本入门书
- IO流问题,不知其解?知晓者帮忙看看,谢过
- 求助.关于类文件里的函数调用.
- 散分!我已经脱离苦海了!写给像我一样被classpath郁闷的菜鸟们。
- 如何和浏览器产生一个socket通讯???----在线等待 急!急!!急!!!
- 如何在一个DOM中更新一个节点或者一部分节点
- 提问一个简单问题,在main()函数中的(String[] args),代表什么?应该怎么用呢??谢谢
- JAVA学习过程中的几个问题3
- myeclipse7.5连接SQL server2008数据库,具体怎么实现?
receivedData.append((char) c);
System.out.println(receivedData.toString());
}
我跟踪看了,对方传的SOAP包都收完全了的,怎么会while ((c = d.read()) != -1)这个地方出异常了呢。
import java.io.DataInputStream;
import java.net.ServerSocket;
import java.net.Socket;import com.guiyangyaxun.isagsms.util.Debug;
import com.guiyangyaxun.isagsms.util.PublicFunction;public class ISAG_SMS_MOServerProessThread implements Runnable {
/** 该线程运行标志 true 在运行,false停止 **/
public static boolean isAvail = false;
public ISAG_SMS_MOServerProessThread(){
isAvail = true;
}
@Override
public void run() {
try {
Debug.outInfo("[ISAG_SMS_Master]"+PublicFunction.getFormatTime()+" MO接收线程启动...");
ServerSocket s=new ServerSocket(ISAG_SMS_Parameter.ListenPort);
while(isAvail){
System.out.println("有上行");
Socket incoming=s.accept();
new Thread(new ISAG_SMS_MOReceiveThread(incoming)).start();
}
} catch (Exception e) {
// TODO: handle exception
}
}
class ISAG_SMS_MOReceiveThread implements Runnable{
private Socket incoming;
public ISAG_SMS_MOReceiveThread(Socket i){
incoming=i;
}
@Override
public void run() {
try {
DataInputStream inputStream= new DataInputStream(incoming.getInputStream());
StringBuffer recString = PublicFunction.recvByte(inputStream);
inputStream.close();
incoming.close();
//ISAG deliverMsg = new ISAG();
//deliverMsg.parseDeliverPack(recString);
//将Deliver消息保存在接收缓冲中,由ISAGMOSocketProcess的ISAGMODataSaveThread
//线程将MO数据保存在数据库中
//ISAG_SMS_DBAccess.getInstance().vctMOData.addElement(deliverMsg);
} catch (Exception ex) {
destory(ex);
}
}
}
/** 销毁线程 **/
public void destory(Exception ex){
ISAG_SMS_MOServerProessThread.isAvail=false;
if(ex !=null){
ex.printStackTrace();
Debug.outInfo("[ISAG-SMS]MO连接(收)线程异常停止,异常原因:" + ex.getMessage());
}
else{
Debug.outInfo("[ISAG-SMS]MO连接(收)线程异常停止");
}
} }