2011-08-04 97 views
0

這是我的類連接,併發送至服務器的命令我嘗試方法 單獨的連接代碼,但是當我測試(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(); 
       } 
       }} 

     } 
+1

什麼問題?你得到的錯誤是什麼? – Otra

+0

當我打電話SocketConnect然後連接到服務器不會發生,當調用SendCommand我得到錯誤「的應用程序......卻意外地採空,請在你的logcat再試 – user875264

+1

? – Otra

回答

0

你是否確信你的manifest文件具有正確的權限?

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

是啊,我已經用它已經 – user875264

1
  • 刪除靜態修改!

    刪除單詞靜態的所有occurances


在您的代碼:

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

你關閉套接字在finally(爲什麼?),這是也錯了!

+0

你覺得我應該socket.close移動()到SendCommand方法..當然 – user875264

+0

是後發..或者不密切 –

0

它看起來像你關閉套接字之前,你甚至有機會使用它,或者你以前are'nt調用SocketConnect。你看到你如何製作插槽,然後關閉它?

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

您需要製作套接字,使用它來連接您的SendCommand,然後關閉它。我不明白爲什麼你需要保持兩個獨立的,但我相信這是你的問題,你調用close您使用套接字連接之前或者你根本不使插座和SendCommand使用「空」連接。

+0

我需要單獨它使每一個按鈕。我不明白,最後點「使用‘空’連接」。 – user875264

+0

老實說,我不意味這是一個壞的方式,只是看起來你是初學者(並且從閱讀其他問題),我認爲你需要做一個稍微研究一下java和android。從標題和每種方法看起來它的作用是'SocketConnect'需要首先被調用,因爲它連接到服務器,而'SendCommand'則是你實際發送數據或從服務器接收數據的地方。您可能想要創建一個構造函數來設置SrvrIP和SrvrPrt以幫助您開始。 – Otra

+0

是的,我是一個初學者,我需要糾正我的代碼上面如果可能..謝謝你 – user875264