搜索
开启辅助访问切换到宽版
查看: 599|回复: 0

android x86模拟器和PC相互通信(socket)

[复制链接]
发表于 2018-10-9 14:57:20 | 显示全部楼层 |阅读模式
android 模拟器和 PC 相互通信(IP +端口+ socket) 实现方法:android socket ① 服务程序运行在 PC 端 ② 客户端程序运行在 android 模拟器 实现形式:由 android 模拟器向服务程序发出消息,然后服务程序会送消息至模拟器。
注意要点: 一、服务程序在 PC 端,需要指定电脑的端口,以数据访问的渠道。
二、客户端程序需要同样的端口以及 PC 的 ip 地址进行 socket 联络 三、数据通信用进程方式实现,可以支持多个客户端访问 四、代码层面: 1、 AndroidManifest.xml需要添加 以网络访问权限支持 2、 部分模拟器版本和 android-SDK 版本不匹配,此时去掉 AndroidManifest.xml 中的 就不会报错。
3、 PC 的 IP 为实际上外网的 IP,即,IPV4。
通过命令行 cmd,ipconfig 查询即可。
代码: 服务端:Java 项目,运行于 PC: Package: com.android.server name:ServerThread 客户端:android 项目,运行于 android 模拟器 package :com.android.client name:MyClientActivity 代码: 服务程序代码: package com.android.server; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class PCServer { public static void main(String a[]) {
new ServerThread(5554).start(); } } class ServerThread extends Thread { private int Port; private ServerSocket serversocket = null; private Socket client; ServerThread(int port) { Port = port; } public void run() { try { serversocket = new ServerSocket(Port); while (true) { client = serversocket.accept(); System.out.println("server accept"); try { // 接收客户端消息 BufferedReader in = new BufferedReader( new InputStreamReader(client.getInputStream())); String str = in.readLine(); System.out.println("read:" + str); // 向服务器发送消息 PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(client.getOutputStream())), true); out.println("MSG from server:Your message(" + str + ")has been successfully sent!"); // 关闭输入输出流 out.close(); in.close(); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } finally { // 关闭客户端 client.close(); System.out.println("server close"); } } } catch (Exception e) {
System.out.println(e.getMessage()); } } } 客户端程序代码: package com.android.client; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MyClientActivity extends Activity { private final String DEBUG_TAG = "Activity01"; private static String IpAddress = "10.141.31.85"; private static int Port = 5554; private TextView mTextView = null; private EditText mEditText = null; private Button mButton = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mButton = (Button) findViewById(R.id.Button01); mTextView = (TextView) findViewById(R.id.TextView01); mEditText = (EditText) findViewById(R.id.EditText01); // 登陆
mButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { sendMsg(); } }); } public void sendMsg() { Socket socket = null; String message = mEditText.getText().toString() + "\r\n"; try { socket = new Socket(IpAddress, Port); // 创建 Socket PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())), true); BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream())); out.println(message); String msg = in.readLine(); if (msg != null) mTextView.setText(msg); else // 向服务器发送消息 // 接收来自服务器的消息 mTextView.setText("数据错误!"); // 关闭流 out.close(); in.close(); // 关闭 Socket socket.close(); } catch (Exception e) { // TODO: handle exception Log.e(DEBUG_TAG, e.toString()); } } }

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

安卓x86中文站|android x86|androidx86|android for x86

网站简介:安卓X86中文站为安卓桌面版爱好者提供下载、测评、资讯的平台。网站广告收入为维持服务费用,请理解!

自定义文字

关于我们

  • 工作时间:如果QQ没上线请发邮件或留言!谢谢!
  • 客服电话:请QQ资讯
  • 78260551#qq.com
  • 公司地址:四川省中江县南华镇金龙街6号

QQ|小黑屋|手机版|Archiver|安卓x86中文站|android x86|androidx86|android for x86 ( 蜀ICP备12015179号-1 )

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表