我目前正在爲我的客戶端和服務器編寫此代碼,使用仿真器的客戶端IP地址
我想用我的模擬器對其進行測試,但是我卡住了。
這是我應該使用的正確的IP地址嗎?
socket = new Socket("10.0.2.2", 6000);
如果我想用我的手機測試了這一點,我應該使用什麼IP地址?
謝謝。
我目前正在爲我的客戶端和服務器編寫此代碼,使用仿真器的客戶端IP地址
我想用我的模擬器對其進行測試,但是我卡住了。
這是我應該使用的正確的IP地址嗎?
socket = new Socket("10.0.2.2", 6000);
如果我想用我的手機測試了這一點,我應該使用什麼IP地址?
謝謝。
如果你想在服務器/客戶端之間發送消息,這裏是我以前做過的示例代碼。
請參考下面的代碼,並隨時發表評論!
另外,這是使用仿真器進行仿真時使用的正確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();
}
}
}
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();
}
}