2013-02-21 144 views
0

我寫Java代碼在Eclipse中創建Android瀏覽器按下瀏覽器的Go按鈕時與服務器通過套接字進行通信。我看過幾個例子,但仍然不知道我的代碼有什麼問題。我有正確的IP地址,並且在代碼的服務器和客戶端使用相同的端口號。下面是客戶端代碼減去import語句:連接Android手機服務器套接字使用Java

public class MainActivity3 extends Activity { 

    EditText URLText; 

    Button GoButton; 
    WebView Browser; 
    int SERVERPORT = 33333; 
    String servernum = "10.215.23.109"; 
    private boolean connected = true; 

    private class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_activity3); 

     URLText = (EditText) findViewById(R.id.URL); 
     GoButton = (Button) findViewById(R.id.Go); 
     Browser = (WebView) findViewById(R.id.WebEngine); 
     Browser.loadUrl("http://www.google.co.in/"); 

     GoButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 

       Browser.setWebViewClient(new MyWebViewClient()); 

       Thread cThread = new Thread(new ClientThread()); 
       cThread.start(); 

       Browser.loadUrl("http://" + URLText.getText().toString()); 

      } 
     }); 
    } 

    public class ClientThread implements Runnable { 
     @Override 
     public void run() { 

      try { 

       Log.d("ClientActivity", "C: Connecting..."); 
       Socket socket = new Socket(servernum, SERVERPORT); 
      } catch (UnknownHostException e) { 
       System.err.println(e); 
      } catch (IOException e) { 
       System.err.println(e); 
      } 
     } 

     public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.activity_main_activity3, menu); 
      return true; 
     } 
    } 
} 

這是服務器代碼:

public static void main(String[] args) throws IOException { 
    int port = 33334; 
    ServerSocket serverSocket = new ServerSocket(port); 
    System.out.println("Server socket created at port # "+ port); 
    Socket socket = serverSocket.accept(); 
    System.out.println("Socket accepted"); 
    System.out.println("Output created"); 

    socket.close(); 
    serverSocket.close(); 
} 

這基本上是一個測試代碼,以確保手機將連接到服務器。當我在我的Linux終端上運行它,它只輸出「端口#33334創建的服務器套接字」,等待手機與從未發生過的端口進行連接,即使我按下去了多次的瀏覽器,這使我相信我的代碼的客戶端有問題。

誰能幫我解決這個問題?

回答

0

這看起來非常相似this post

而是創建一個web視圖,你可以使用一個DefaultHttpClient直接與服務器進行通信:

try{ 
    DefaultHttpClient client = new DefaultHttpClient(); 
    HttpGet request = new HttpGet("http://10.215.23.109:33333"); 
    HttpResponse response = client.execute(request); 
}catch(Exception e){ 
    // Handle the exception 
    e.printStackTrace(); 
} 
+0

喜。我想登錄到一個網站,並給我main_page的html。我應該做什麼。請幫幫我。謝謝。 – karimkhan 2015-12-07 20:31:44

相關問題