1.自己首先建立个java project.用它做为服务器端的程序,代码如下:
package com.server;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Myserver {
public static void main(String[] args) {
try {
ServerSocket server=new ServerSocket(5000);
while(true){
Socket client=server.accept();
OutputStream out=client.getOutputStream();
String msg="Hello android";
out.write(msg.getBytes());
client.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.建立android客户端程序,代码如下:
package com.android;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class SocketTestActivity extends Activity {
private TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myTextView=(TextView)findViewById(R.id.msgTextView01);
myTextView.setText("dd");
try {
Socket socket=new Socket("127.0.0.1",5000);
myTextView.setText("ff");
InputStream in=socket.getInputStream();
byte[]buffer=new byte[in.available()];
in.read(buffer);
String msg=new String(buffer);
System.out.println(msg);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
myTextView.setText("ee");
e.printStackTrace();
}
}
}
3.然后运行java project中的程序,查看端口,已经等待监听。
4.运行android应用程序在客户端,报错,无法建立socket连接,错误信息是java.net.PlainSocketImpl.connect,这说明没有连接成功,因为IP地址或端口号错误。
花了好长时间在网上查看原因,有说把ip:127.0.0.1改成10.0.2.0的,结果不行,10.0.2.2是模拟器的IP,相当于本地的127.0.0.1.是android的路由器给每个模拟器分配的IP地址。
有进入cmd,输入ipconfig,直接使用里面的IP的,也不行的。
后来进行端口的映射,使用命令telnet localhost 5554,
diret tcp:5000:6000,也不行,后来发现这是在