2014-02-13 42 views
0

我目前正在爲我的客戶端和服務器編寫此代碼,使用仿真器的客戶端IP地址

我想用我的模擬器對其進行測試,但是我卡住了。

這是我應該使用的正確的IP地址嗎?

socket = new Socket("10.0.2.2", 6000); 

如果我想用我的手機測試了這一點,我應該使用什麼IP地址?

謝謝。

回答

0

如果你想在服務器/客戶端之間發送消息,這裏是我以前做過的示例代碼。

請參考下面的代碼,並隨時發表評論!

另外,這是使用仿真器進行仿真時使用的正確IP地址。

此外,不要忘記在您的宣言中將您的權限更改爲「android.permission.INTERNET」。

=================================myClient================================== 

    package com.example.myclient; 

    import java.io.IOException; 
    import java.io.ObjectInputStream; 
    import java.io.ObjectOutputStream; 
    import java.net.Socket; 
    import java.net.UnknownHostException; 

    import android.os.Bundle; 
    import android.app.Activity; 
    import android.util.Log; 
    import android.view.Menu; 
    import android.view.View; 
    import android.widget.Button; 

    public class MainActivity extends Activity { 

     /** Manifest --> uses permission --> "android.permission.INTERNET" */ 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      Button btn = (Button) findViewById(R.id.btn); 
      btn.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        class MyThread extends Thread { 
         @Override 
         public void run() { 
          super.run(); 
          Log.d("client", "thread is running..."); 
          String str = "Do you want to eat hamburger?"; 
          Socket socket; 
          try { 
           socket = new Socket("10.0.2.2", 6000); 
           ObjectOutputStream out = new ObjectOutputStream(socket 
             .getOutputStream()); 
           ObjectInputStream in = new ObjectInputStream(
             socket.getInputStream()); 
           out.writeObject(str); 
           String rcv = (String) in.readObject(); 
           Log.d("client", "Server :" + rcv); 
           out.close(); 
           in.close(); 
           socket.close(); 
          } catch (UnknownHostException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } catch (IOException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } catch (ClassNotFoundException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 
         } 
        } 

        MyThread t = new MyThread(); 
        t.start(); 

       } 
      }); 

     } 

    } 



============================MyServer======================================== 

import java.io.IOException; 
import java.io.InputStream; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.OutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class MyServer { 

    public static void main(String[] args) throws IOException, ClassNotFoundException { 
     ServerSocket server = new ServerSocket(6000); 
     System.out.println("waiting....."); 
     while (true) { 
      Socket socket = server.accept(); 
      System.out.println("a client has connected..."); 
      InputStream in = socket.getInputStream(); 
      OutputStream out = socket.getOutputStream(); 

      ObjectInputStream objIn = new ObjectInputStream(in); 
      ObjectOutputStream objOut = new ObjectOutputStream(out); 

      String str = (String) objIn.readObject(); 
      System.out.println("client : " + str); 
      objOut.writeObject("No, I'm on a diet!!!"); 

      objIn.close(); 
      objOut.close(); 
      socket.close(); 
     } 
    } 
} 
0

10.0.2.2將是您使用模擬器的正確IP。如果您在機器上開發(同一臺機器上的客戶機和服務器),則將使用127.0.0.1。正如你所說你想在你的手機上運行下面的代碼來運行它,你將得到你的IP(如果你在電腦上它也可以):

public class net 
{ 
    net() throws UnknownHostException 
{ 
    InetAddress ia=InetAddress.getLocalHost(); 
    System.out.println(ia); 

    ia=InetAddress.getByName("local host"); 
    System.out.println(ia); 
} 
public static void main(String args[])throws UnknownHostException 
    { 
    net a=new net(); 
    } 
    }