首先我们adb命令做端口映射:adb forward tcp:PCPort tcp:AnroidPort
服务端(APP):安卓中启一个线程做Sochet服务端监听:
class SocketThread extends Thread {
public void run(){
Bundle bundle = new Bundle();
bundle.clear();
OutputStream output;
ServerSocket server;
try {
server = new ServerSocket(8844);
Address.setText("Socket Demo run...");
while (true) {
Message msg= new Message();;
msg.what = 0x11;
Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
String str = in.readLine();
msg.setData(bundle);
out.println("手机已经是收到!!!".getBytes("utf-8"));
out.flush();
client.close();
in.close();
out.close();
bundle.putString("msg", str.toString());
mHandler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
Address.setText(e.getMessage());
e.printStackTrace();
}
}
}
监听到的数据在某个控件中输出:
public static Handler mHandler = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
if (msg.what==0x11) {
mHandler.sendEmptyMessage(0);
Bundle bundle = msg.getData();
Address.setText(bundle.getString("msg"));
}
};
};
接收到的消息展示控件:
static EditText Address;
客服端(PC):
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
class SocketDemo {
public static void main(String[] args) throws Exception {
Thread.sleep(2000);
for(int i=0;i<100;i++){
System.out.println(putSocket("第"+i+"次收到消息!"));
Thread.sleep(2000);
}
putSocket("---------------------------------------------");
}
public static String putSocket(String str) throws Exception{
String daw;
InetAddress serverAddr = InetAddress.getByName("127.0.0.1");
Socket socket = new Socket(serverAddr, 8648);
socket.setKeepAlive(true);
socket.setSoTimeout(120 * 1000);
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
out.write(str.getBytes("utf-8"));
out.flush();
daw = in.toString();
out.close();
in.close();
return daw;
}
}