Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 插座过了一会儿就关上了_Sockets_Garbage Collection - Fatal编程技术网

Sockets 插座过了一会儿就关上了

Sockets 插座过了一会儿就关上了,sockets,garbage-collection,Sockets,Garbage Collection,我有我的套接字关闭或重置了一段时间后,我认为垃圾收集的问题,通过它的读写器 用于处理响应的异步任务: @Override protected Void doInBackground(Void... params) { //Log.e("NEW LISTENER THREAD NAME", name); //initializations try{ clientSocket = new Socket(); //clientSocket.s

我有我的套接字关闭或重置了一段时间后,我认为垃圾收集的问题,通过它的读写器

用于处理响应的异步任务:

@Override
protected Void doInBackground(Void... params) {

    //Log.e("NEW LISTENER THREAD NAME", name);

    //initializations
    try{
        clientSocket = new Socket();
        //clientSocket.setTcpNoDelay(true);
        clientSocket.connect(new InetSocketAddress(serverURL, dataServerPort));
        requestSender = new PrintWriter(new PrintStream(clientSocket.getOutputStream(), true,"UTF-8"));
        Sender.Init();
    }catch(Exception e){
        e.printStackTrace();
    }

    gsonObj = new GsonBuilder().create();//This the object that handels every comming response
    finish = false;

    try{
        listener = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    }catch (IOException e) {
        Log.e("FROM CREATING LISTENER", "FROM CREATING LISTENER ========> ");
        e.printStackTrace();
    }

    LOGGED_IN = StaticArea.getLoggedIn(cnt);
    if(LOGGED_IN){
        USER = StaticArea.getUserName(cnt);
        Sender.ResumeUser();

        /*********DELEGATING CONNECTING TO SERVER TO BE USED IN SERVICE*************/
        Message connectionMsg = new Message();
        connectionMsg.obj = Boolean.valueOf(true);
        serviceHandler.handleMessage(connectionMsg);
        /*********END DELEGATING CONNECTING TO SERVER*************/

    }else{

        /*********DELEGATING CONNECTING TO SERVER TO BE USED IN SERVICE*************/
        Message connectionMsg = new Message();
        connectionMsg.obj = Boolean.valueOf(false);
        serviceHandler.handleMessage(connectionMsg);
        /*********END DELEGATING CONNECTING TO SERVER*************/

    }

    GoOnline();

    while(!finish){

        try{

            answerS = listener.readLine();

            if(answerS != null )//to avoid any null response
            if(answerS.contains(Response.MYRESPONSE){

                if(MyService.theHandler != null){
                    Message msg = new Message();
                            msg.obj = answerS;
                            MyService.theHandler.sendMessage(msg);
Sender类是具有静态方法并使用my sockets输出的类:

public class Sender {

private static Gson gsonObj;

public static void Init() {
    gsonObj = new GsonBuilder().create();
}

public static void SendTestRequest(){

    try{
        Request req = new Request();
        req.setR_TYPE(Request.TEST);

        String reqString = gsonObj.toJson(req);
        requestSender.println(reqString);
        requestSender.flush();
    }catch(Exception e){

    }


}//end method

请提供更多信息。什么代码语言,操作系统,你怎么知道它被其他东西关闭了?在这里粘贴一些代码。尝试检查套接字错误。Win GetLastError将为您提供更多信息。我正在使用android,我看到它在服务器端关闭,例外情况是由对等方重置连接。在我使用了它的写入程序之后,我在客户端关闭了它,然后它的垃圾被回收。我的代码在上面。当连接被对等方重置时,你无法控制它。您必须处理此异常并中断发送/接收。查找对等方断开您连接的原因(请与WireShark等协议分析器进行检查)-可能是您连接的端口不存在,或者您发送了一条格式错误的消息。引发异常的确切位置是哪里?