开发者

Problem in connection code

this is my class to connect and send commands to server i try separate connect code in method but when i test the (SocketConnect) method i found it doesn't work. my code

public class ConnAndSend {

     static Socket socket = null;


        static void SendCommand(String cmnd)  {

            DataOutputStream dataOutputStream = null;

        try {   

             dataOutputStream = new DataOutputStream(socket.getOutputStream());
             dataOutputStream.writeUTF(cmnd);

                } catch (IOException e) {
                  // TODO Auto-generated c开发者_Python百科atch block
                  e.printStackTrace();
                 }  
                finally{

                      if (dataOutputStream != null){
                       try {
                        dataOutputStream.close();
                       } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                       }}

                      };

        }
        // method to connect to server
        static void SocketConnect(String SrvrIP,int SrvrPrt) {
         //      Socket socket = null;
             try {   

                 socket = new Socket(SrvrIP, SrvrPrt);   

                 } catch (IOException e) { e.printStackTrace();}

             finally{

               if (socket != null){
               try {
                socket.close();
               } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               }
               }}

        }


  • Remove the static modifier!!

    Remove all the occurances of the word static


In your code:

    socket = new Socket(SrvrIP, SrvrPrt);   
} catch (IOException e) { e.printStackTrace();}
    finally{
        if (socket != null){
            try {
            socket.close();

you are closing the socket in finally (why?) this is wrong also!


Have you made sure your manifest file has the correct permissions?

<uses-permission android:name="android.permission.INTERNET" />


It looks like you are closing the socket before you even get a chance to use it or you are'nt calling SocketConnect before . Do you see how you you make the socket, then you close it?

    socket = new Socket(SrvrIP, SrvrPrt);   
} catch (IOException e) { e.printStackTrace();}
    finally{
        if (socket != null){
            try {
            socket.close();

You need to make the socket, use it to connect in your SendCommand, then close it. I'm not quite sure why you need to keep the two separate, but I believe that is your problem, you are calling close before you use the socket to connect or you simply aren't making the socket and SendCommand is using "null" to connect.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜