Проблема в коде подключения - PullRequest
0 голосов
/ 04 августа 2011

это мой класс для подключения и отправки команд на сервер, я пытаюсь использовать отдельный код подключения в методе но когда я протестировал метод (SocketConnect), я обнаружил, что он не работает. мой код

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 catch 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();
               }
               }}

        }

Ответы [ 3 ]

1 голос
/ 04 августа 2011
  • Удалить модификатор статический !!

    Удалить все вхождения слова статический


В вашем коде:

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

вы закрываете сокет в finally (почему?)это тоже неправильно!

0 голосов
/ 04 августа 2011

Похоже, что вы закрываете сокет еще до того, как у вас появится возможность его использовать, или вы ранее не вызывали SocketConnect.Вы видите, как вы делаете розетку, затем закрываете ее?

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

Вам необходимо создать сокет, использовать его для подключения к SendCommand, а затем закрыть его.Я не совсем уверен, почему вам нужно разделить эти два элемента, но я полагаю, что это ваша проблема, вы звоните близко, прежде чем использовать сокет для соединения, или вы просто не делаете сокет, а SendCommand использует "null "для подключения.

0 голосов
/ 04 августа 2011

Вы убедились, что ваш файл манифеста имеет правильные разрешения?

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