I need help understanding socket connection to the EV3

This is where you talk about the EV3 software itself, installation issues, and programming talk.

Moderators: roger, gloomyandy, skoehler

clplaneguy
Novice
Posts: 29
Joined: Sat Feb 18, 2017 3:44 pm

I need help understanding socket connection to the EV3

Postby clplaneguy » Wed May 16, 2018 8:55 pm

I have been working with SOCKETs to connect with the EV3. I have combined two programs so I can do some error checking. Best programming practice would be to close the SOCKET before exit. Eclipse will let me close the SOCKET at line 47.

Code: Select all

Socket sock = socket.accept();                                     
//  To do: my code                                         
//sock.close();    //    Line 47 Socket sock = socket.accept()   



If I do that the program does not do anything. But, Eclipse will NOT let me close the SOCKET at line 61.

Code: Select all

// To do: my code                                                                 
//sock.close();    //    Line 61 Socket sock = socket.accept()               
socket.close();    //    ServerSocket socket = new ServerSocket( 8080 )         




Am I safe not closing the socket?
If I do not close the socket would that be a memory leak?

Does anyone know what I should do?

My program follows . . .

Code: Select all

import java.io.IOException;
import java.net.ServerSocket;                           
import java.net.Socket;                             
                                                     
import org.opencv.core.Core;                       
                                                               
                                                                     
public class SocketTEST
    {    /////////////////////////////////////////////////////////////////////////////////////////////////////
                                                                                                            //
                                                                                                            //
    public static void main(String[] args) throws Exception                                                 //
        {    ///////////////////////////////////////////////////////////////////////////////////////////    //
        System.out.println();                                                                         //    //
        System.out.println("5/16/2018");                                                              //    //
        System.out.println("Program: SocketTEST");                                                    //    //
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);                                                 //    //
                                                                                                      //    //
        boolean portTaken = false;                                                                    //    //
        ServerSocket socket = null;                                                                   //    //
        System.out.println("Assesing Socket 8080");                                                   //    //
        try {    /////////////////////////////////////////////////////////////////////////////////    //    //
            socket = new ServerSocket( 8080 );                                                  //    //    //
            System.out.println("ServerSocket PORT (8080) open");                                //    //    //
            System.out.println("SeverSocket local port is . . .  " + socket.getLocalPort());    //    //    //
            }    /////////////////////////////////////////////////////////////////////////////////    //    //
        catch (IOException e)                                                                         //    //
            {    //////////////////////////////////////////////////////                               //    //
            portTaken = true;                                        //                               //    //
            System.out.println("ServerSocket PORT (8080) Taken");    //                               //    //
            socket.close();                                          //                               //    //
            System.out.println("Exception occured"+ e);              //                               //    //
            System.out.println();                                    //                               //    //
            e.printStackTrace();                                     //                               //    //
            System.exit(-1);                                         //                               //    //
            }    //////////////////////////////////////////////////////                               //    //
        finally                                                                                       //    //
            {    ////////////////////////////////////////////////////////////////////////////////     //    //
            if (socket != null)                                                                //     //    //
                try                                                                            //     //    //
                    {    //////////////////////////////////////////////////////////////////    //     //    //
                    System.out.println("Connecting to Port 8080\n    Waiting . . .");    //    //     //    //
                    Socket sock = socket.accept();                                       //    //     //    //
                    //  To do: my code                                                   //    //     //    //
                    //sock.close();    //    Line 47 Socket sock = socket.accept()       //    //     //    //
                    System.out.println("Socket connected");                              //    //     //    //
                    }    //////////////////////////////////////////////////////////////////    //     //    //
                catch (IOException e)                                                          //     //    //
                    {    ////////////////////////////////////////////                          //     //    //
                    System.out.println("socket = null");           //                          //     //    //
                    System.out.println("Exception occured"+ e);    //                          //     //    //
                    System.out.println();                          //                          //     //    //
                    e.printStackTrace();                           //                          //     //    //
                    System.exit(-1);                               //                          //     //    //
                    }    ////////////////////////////////////////////                          //     //    //
                                                                                               //     //    //
            }    ////////////////////////////////////////////////////////////////////////////////     //    //
        // To do: my code                                                                             //    //
        //sock.close();    //    Line 61 Socket sock = socket.accept()                                //    //
        socket.close();    //    ServerSocket socket = new ServerSocket( 8080 )                       //    //
        }    ///////////////////////////////////////////////////////////////////////////////////////////    //
                                                                                                            //
                                                                                                            //
    }    /////////////////////////////////////////////////////////////////////////////////////////////////////

User avatar
gloomyandy
leJOS Team Member
Posts: 6047
Joined: Fri Sep 28, 2007 2:06 pm
Location: UK

Re: I need help understanding socket connection to the EV3

Postby gloomyandy » Fri May 18, 2018 7:46 am

This is nothing to do with Sockets, but is just basic Java. You are trying to reference "sock" which was declared in an inner block (the one inside the try/catch), but your call to sock.close takes place in the outer block, in which "sock" does not exist. You need to move the declaration of "sock" to the outer block and to simply assign to it in the inner one....
leJOS news https://lejosnews.wordpress.com/


Return to “EV3 Software”

Who is online

Users browsing this forum: No registered users and 1 guest