2012-04-02 77 views
0

我用搜索小時現在,但無法找到適合我的問題的答案。我只是想在PC和Android設備之間創建一個TCP網絡連接。發送數據(比方說一個簡單的字符串)從Android到PC實際上沒有任何問題與Socket和ServerSocket。 但是,從PC發送數據到Android不起作用。沒有收到任何東西。下面是代碼:從PC到Android設備的網絡連接

try { 
     ServerSocket serverSocket = new ServerSocket(1234); 

     //tell logcat the server is online 
     Log.d("TCP", "C: Server Online..."); 

     while (true) { 

      Socket client = serverSocket.accept(); 

      BufferedReader in = new BufferedReader(new InputStreamReader( client.getInputStream())); 
      String input = in.readLine(); 
      // Do what ever you want with input String 

      client.close(); 
     } 
    } catch (Exception e) { 
     Log.d("TCP", "C: " + e); 
    } 

客戶PC處:在Android裝置

服務器

try { 

     InetAddress serverAddr; 

     try { 
      serverAddr = InetAddress.getByName(IPAdresse); 

      socket = new java.net.Socket(serverAddr,portAdresse); 
      socket.setSoTimeout(1000); 
     }catch (ConnectException e) { /*e.printStackTrace();*/ } 

     PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 
     out.println(nachricht); 

     socket.close(); 

    }catch (SocketException e) { 

// e.printStackTrace(); try {socket.close(); } catch(Exception e1){}

}catch (IOException e) { 

// e.printStackTrace(); } try {socket.close(); } catch(Exception e1){}

}catch (NullPointerException e) { 

// e.printStackTrace(); try {socket.close(); } catch(Exception e1){/ e1.printStackTrace(); /}

} 

我完全不知道爲什麼它不起作用。我想我的Android代碼或Android設備中的某些設置存在問題。也許有人已經有同樣的麻煩和適合我的靈魂。會幫助很多。 感謝

+0

發佈您的整個代碼。 – 2012-04-02 12:19:06

+1

檢查異常,你不記錄/打印它們 – oers 2012-04-02 12:19:45

回答

0

改變這一行:

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 

這樣:

PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 

您的PC客戶端上,看看它是否工作。

+0

不,也不工作。 我嘗試了模擬器併爲Android單元創建了一個APK,但都沒有奏效。也許對於模擬器我使用了錯誤的IP,我沒有。 由於socket.accept()阻塞了以下命令,所以必須將ServerSocket放入線程中。但是,當我想將接收到的消息打印到文本字段中時,沒有任何反應。 是否可以使用IP在Android系統的設置中提到的內容?如果它在設備本身安裝並運行,而不是在仿真器上運行? 感謝您的幫助 – user1307940 2012-04-02 13:58:55

0

我能想到的有兩件事情可以發生在這裏:

  1. Android是唯一有約束力的插座爲127.0.0.1
  2. 有手機
  3. 防火牆上缺少權限的地方阻止通信
  4. 你沒有連接到正確的IP地址

對於像THI問題當我用Wireshark嗅探數據時,我輸入了大量的打印語句或單步執行代碼。

相關問題