查看: 554|回复: 0

[Android教程] 在PC端如何访问虚拟机或真机IP。。。。求解

发表于 2018-2-4 10:15:25
  1. public class MainActivity extends AppCompatActivity {

  2.     private SimpleHttpServer shs;

  3.     @Override
  4.     protected void onCreate(Bundle savedInstanceState) {
  5.         super.onCreate(savedInstanceState);
  6.         setContentView(R.layout.activity_main);
  7.         WebConfiguration wed = new WebConfiguration(8078, 50);
  8.         shs = new SimpleHttpServer(wed);
  9.         shs.startAsync();

  10.     }

  11.     @Override
  12.     protected void onDestroy() {
  13.         try {
  14.             shs.stopAsync();
  15.         } catch (IOException e) {
  16.             e.printStackTrace();
  17.         }
  18.         super.onDestroy();
  19.     }
复制代码

  1. public class SimpleHttpServer {
  2.     private final ExecutorService threadPoob;
  3.     private boolean isEnable;
  4.     private WebConfiguration web;
  5.     private ServerSocket socket;
  6.     private Socket remotePeer;

  7.     public SimpleHttpServer(WebConfiguration  web){
  8.         this.web=web;
  9.         threadPoob = Executors.newCachedThreadPool();
  10.     }
  11.     public void startAsync(){
  12.         isEnable=true;
  13.         new Thread(new Runnable() {
  14.             @Override
  15.             public void run() {
  16.                 doProcSync();
  17.             }
  18.         }).start();
  19.     }
  20.     public void stopAsync() throws IOException {
  21.         if(!isEnable){
  22.             return;
  23.         }
  24.         isEnable=false;
  25.         if(socket!=null){
  26.             socket.close();
  27.             socket=null;
  28.         }
  29.     }

  30.     private void doProcSync() {

  31.         try {
  32.             InetSocketAddress socketaddress=new InetSocketAddress(web.getPort());
  33.             socket=new ServerSocket();
  34.             socket.bind(socketaddress);
  35.             while (isEnable){
  36.                 otePeer = socket.accept();
  37.                 threadPoob.submit(new Runnable() {
  38.                     @Override
  39.                     public void run() {
  40.                         onAcceptRemotePeer(remotePeer);

  41.                     }
  42.                 });
  43.             }
  44.         } catch (IOException e) {
  45.             Log.e("doProcSync",e.toString());
  46.             e.printStackTrace();
  47.         }
  48.     }

  49.     private void onAcceptRemotePeer(Socket remotePeer) {
  50.         try {
  51.             InputStream inputStream = remotePeer.getInputStream();
  52.             String headerLine=null;
  53.             while ((headerLine=StreamToolkit.reabLing(inputStream))!=null){
  54.                     if(headerLine.equals("\r\n")){
  55.                         return;
  56.                     }
  57.                     Log.e("spy",headerLine);
  58.             }
  59.             Log.e("---","成功");
  60.         } catch (IOException e) {
  61.             Log.e("onAcceptRemotePeer",e.toString());
  62.         }
  63.     }
  64. }
复制代码
  1. class StreamToolkit {
  2.     public static String reabLing(InputStream inputStream) throws IOException {
  3.         int c1=0;
  4.         int c2=0;
  5.         StringBuilder sb=new StringBuilder();
  6.         while (c2!=-1&&!(c1=='\r'&&c2=='\n')){
  7.             c1=c2;
  8.             c2=inputStream.read();
  9.             sb.append((char) c2);
  10.         }
  11.         if(sb.length()!=0){
  12.             return sb.toString();
  13.         }
  14.         return null;
  15.     }
  16. }
复制代码
  1.     private int maxParallels;
  2.     public WebConfiguration(int port,int maxParallels){
  3.         this.port=port;
  4.         this.maxParallels=maxParallels;
  5.     }
  6.     public void setPort(int port){
  7.         this.port=port;
  8.     }
  9.     public void setMaxParallels(int maxParallels){
  10.         this.maxParallels=maxParallels;
  11.     }
  12.     public int getPort(){
  13.         return this.port;
  14.     }
  15.     public int getMaxParallels(){
  16.         return this.maxParallels;
  17.     }
  18. }
复制代码


回复

使用道具 举报