2013-03-08 113 views
0

我已經看到了其中一些問題,但沒有一個答案似乎能夠解決我的問題。 我想從我的客戶端(Android手機,我實際上有一個物理設備)在我的服務器(PC)上顯示消息。 我有一個非常簡單的PC服務器:使用Android客戶端和PC服務器的套接字

public void run(int port) throws Exception 
{ 
    ServerSocket ss = new ServerSocket(port); 
    Socket sock = ss.accept(); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(sock.getInputStream())); 

    System.out.println(reader.readLine()); 
} 

(在我的主要無效):

Server s = new Server(); 
s.run(4444); 

,也是一種極其簡單的Android客戶端:

package com.j03.client; 

import android.app.*; 
import android.os.*; 
import android.view.*; 
import android.widget.*; 
import java.io.*; 
import java.net.*; 

public class MainActivity extends Activity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     try 
     { 
      runClient("10.0.2.2", 4444, "hey"); 
     } 
     catch (Exception e) 
     { 
      TextView t = new TextView(this); 
      t.setText(e.getMessage()); 
      setContentView(t); 
     } 
    } 

    public static void runClient(String ip, int port, String message) throws Exception 
    { 
     Socket sock = new Socket(ip, port); 
     PrintStream ps = new PrintStream(sock.getOutputStream()); 
     ps.println(message); 
    } 
} 

我也有正確的互聯網我的清單文件中的權限:

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

客戶端代碼和PC客戶端一樣正常工作。 (PC客戶端到PC服務器工作正常)。

但我不能讓它在Android上工作!

PC服務器根本不顯示任何內容。 :(

有誰知道我可能做錯了嗎?

+0

你只設置TextView的時候有一個正確的例外如果一切正常,那麼你永遠不會在屏幕上顯示任何東西 – elevine 2013-03-08 22:30:46

+0

W hen'runClient()'被稱爲它應該發送消息到服務器。例外情況是顯示任何錯誤(在我向清單中添加正確權限之前它曾做過)。 客戶端不應顯示任何文本。 – 2013-03-08 22:37:07

+0

那麼,到底什麼是不工作?這聽起來像問題是「我只是得到一個空白的屏幕。」 – elevine 2013-03-08 22:47:30

回答

0

您也可能會做這一切的UI線程。我想如果你做到這一點,顯示應用程序沒有響應的Android有時會殺了你的應用程序對話框。

其他海報還你的活動是空的,直到發生異常。我想解決這個問題,並嘗試開始與runClient一個單獨的線程在它

+0

我會盡力謝謝你。但我的Android應用程序永遠不會關閉。 – 2013-03-08 22:59:29

相關問題