- 浏览: 149950 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ZHxin:
但是自己申请的key不能使用,使用两种方法得到的SHA1值不同 ...
解决百度地图SDK无法显示地图的问题 -
wang_2011_ying:
laoyun_1 写道哈哈,你终于又上线了。。。。现在在做an ...
在RedHat AS4 下面安装gcc 4.3.2 -
laoyun_1:
哈哈,你终于又上线了。。。。现在在做android开发,还是做 ...
在RedHat AS4 下面安装gcc 4.3.2 -
lovezehui:
加油~~哈哈
还有两个月.. -
wang_2011_ying:
花已梦 写道没提到下载我已经把相关的文件上传了,你可以直接下载 ...
解决firefox下百度文库打不开,无法播放视频等问题
1、创建一个模拟器(API level小于等于10,当时选择了很多模拟器,只有模拟器的android版本较低时,可以测试通,具体原因也不知道为什么),建立模拟器的截图如下:
2、服务器端代码如下:
3、客户端代码如下:
4、重点:在Mainfest文件中添加网络访问权限
5、测试结果截图如下
2、服务器端代码如下:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 服务器端 * @author 王颖 */ public class MultiThreadServer { private static int port = 5000;//端口号 private ServerSocket serverSocket; private ExecutorService executorService; //线程池 private final int POOL_SIZE = 10; //单个CPU线程池大小 public MultiThreadServer(){ try { serverSocket = new ServerSocket(port); //Runtime的availableProcessor()返回当前系统的CPU个数 executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE); System.out.println("服务器启动...."); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void service(){ while(true){ Socket socket = null; try { socket = serverSocket.accept(); executorService.execute(new Handler(socket));//在未来的某个时间执行给定命令 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { MultiThreadServer multi = new MultiThreadServer(); multi.service(); } } class Handler implements Runnable{ private Socket socket; public Handler(Socket socket){ this.socket = socket; } public BufferedReader getReader(Socket socket){ InputStream socketIn = null; try { socketIn = socket.getInputStream(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return new BufferedReader(new InputStreamReader(socketIn)); } public BufferedWriter getWriter(Socket socket){ OutputStream socketOut = null; try { socketOut = socket.getOutputStream(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return new BufferedWriter(new OutputStreamWriter(socketOut)); } public void run(){ BufferedReader br = getReader(socket); BufferedWriter bw = getWriter(socket); String msg = ""; boolean flag = false;//读 try { System.out.println("等待客户端发来的信息....."); while((msg = br.readLine()) != null){ System.out.println(msg); flag = true; } if(!flag){ bw.write("服务器发来的信息"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try{ if(br != null){ br.close(); } if(bw != null){ bw.close(); } if(socket != null){ socket.close(); } }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
3、客户端代码如下:
import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * 客户端 * @author 王颖 * */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //响应确认按钮事件 Button sure = (Button)findViewById(R.id.sure); sure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub EditText port_Text = (EditText)findViewById(R.id.port_info); String port = port_Text.getText().toString(); Toast.makeText(MainActivity.this, port, Toast.LENGTH_SHORT).show(); if(sendMsg("10.0.2.2",port,"info from AVD")){ // if(sendMsg("10.20.61.61",port,"info from AVD")){//也可 Toast.makeText(MainActivity.this, "发送成功!", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this, "发送失败", Toast.LENGTH_SHORT).show(); } } }); } /* *向服务器发送信息 */ public boolean sendMsg(String ip, String port , String msg){ try { int port1 = Integer.parseInt(port); Toast.makeText(MainActivity.this, "socket通信的端口号:" + port1, Toast.LENGTH_SHORT).show(); Socket socket= new Socket(ip,port1); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // System.out.println(""); bw.write(msg); bw.newLine();//防止阻塞 bw.flush(); bw.close(); socket.close(); return true; } catch(UnknownHostException e) { Log.e("UnknownHostException", "来自客户端信息"); e.printStackTrace(); return false; } catch (IOException e) { Log.e("IOException", "来自客户端信息"); e.printStackTrace(); return false; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
4、重点:在Mainfest文件中添加网络访问权限
<uses-permission android:name="android.permission.INTERNET" > </uses-permission>
5、测试结果截图如下
发表评论
-
Android APK升级代码编写心得
2014-06-24 15:38 825最近两周一直在做Android APP在线升级,主要学习的内容 ... -
socket通讯输入流输出流阻塞解决方案
2014-01-07 13:39 1489服务器端读入流部分代码: System.out.printl ... -
AutoCompleteTextView 自动提示输入
2013-10-21 10:24 640AutoCompleteTextView是一个可编辑的文本视图 ... -
android 获取wifi mac 地址的代码
2013-10-10 14:03 1147public String macAddress = &quo ... -
Android中定时执行任务的3种实现方法
2013-10-10 10:43 663在Android开发中,定时执行任务的3种实现方法: 一、采 ... -
Android读取文件方法总结
2013-10-09 16:23 881首先,说一句android真是 ... -
解决百度地图SDK无法显示地图的问题
2013-09-09 17:05 1981之前一直在研究百度定位问题,从官网上下载了Android SD ... -
Android权限大全
2013-09-05 14:38 713访问登记属性android.permission.ACCESS ... -
GPS数据解析以及百度地图显示定点
2013-09-05 09:38 912最近,应组长要求,开始重新接触Android,待续。 -
Handler 消息传递机制介绍
2013-08-29 17:27 914好久没有碰Android了,现在由于项目需要,重拾Androi ... -
adb命令总结
2012-08-06 16:00 3111adb(Android Debug Bridge)是Andro ... -
解决Android AVD无法启动
2012-07-30 16:27 875也不知怎么回事儿,之前AVD还可以正常启动,有段时间没有弄An ... -
LayoutParams和LayoutInflater理解
2012-04-22 22:04 2629LayoutParams继承于Android.view.Vie ... -
Android工程中R.java文件突然消失
2012-04-19 20:38 1689今天试着写一个小的Android工程,在编写配置布局文件时,有 ... -
Android 初步学习总结-Activity介绍和UI组件
2012-04-19 09:09 1634首先会查阅Android API, ... -
Android应用程序结构介绍
2012-04-18 17:10 6749首先介绍一下Android体系 ... -
Activity not started
2012-04-18 15:16 1864在运行Android程序时,会出现无法运行,提示如下: Act ... -
Android API核心开发包介绍
2012-04-18 10:05 1037摘抄(为了有个大致的了解~~): 下面介绍一下Android ... -
Andriod开发前的准备工作
2012-04-18 08:50 687首先是安装JDK、Eclipse、Android SDK以及A ... -
开始学习Android
2012-04-17 10:43 628今天在徐同学的帮助下,开始接触Android,Android ...
相关推荐
综上所述,实现Android模拟器和PC之间的Socket通信需要在PC端编写服务程序,Android端编写客户端程序,通过指定的IP地址和端口进行通信。确保Android应用有网络访问权限,处理好异常,以及正确地打开和关闭Socket...
本项目聚焦于在同一台PC上运行的两个Android模拟器之间的Socket通信,这对于开发和测试分布式应用程序或需要设备间通信的场景非常有用。以下是关于这个主题的详细解释: 一、Android Socket基础 Socket是网络通信的...
在本项目中,"Android应用源码安卓与PC的Socket通信项目java版及运行截图.rar",我们将探讨如何实现Android设备与个人计算机(PC)之间的通信,主要利用Java的Socket编程技术。Socket通信是一种基于TCP/IP协议的网络...
在PC端,我们将创建一个服务器端Socket,监听特定的端口,等待来自Android模拟器的连接请求。这通常涉及以下步骤: 1. 导入必要的Java套接字库:`import java.net.ServerSocket;` 和 `import java.net.Socket;` 2. ...
本文将详细探讨如何实现Android设备与PC之间的Socket通信。Socket,又称为套接字,是网络编程的基本组件,它提供了进程间通信的能力,使得运行在不同设备上的应用程序能够相互通信。 首先,我们需要理解Socket通信...
【PC端与Android端通信】是指在个人计算机(PC)和Android设备之间建立通信链路,以便进行数据传输或控制指令的交互。这种通信通常利用USB接口,通过adb(Android Debug Bridge)工具实现。adb是Android开发环境中的...
在Android模拟器中,与PC进行通信通常涉及到网络编程,主要使用的是Socket通信技术。这里的实例展示了如何在Android客户端和PC服务器端通过TCP/IP协议进行数据传输。下面将详细讲解这个过程。 首先,Android客户端...
2. **PC服务器端实现**: - **创建ServerSocket**:在PC上,我们需要创建一个ServerSocket来监听特定的端口,等待客户端连接。例如,`ServerSocket serverSocket = new ServerSocket(端口号);` - **接受连接**:...
在本项目中,"Android应用源码安卓与PC的Socket通信项目java版.zip" 提供了一个实例,展示了如何使用Java编程语言在Android设备与个人计算机(PC)之间实现Socket通信。Socket是网络通信中的基本组件,它允许两个或...
本教程将探讨如何通过adb协议实现PC与Android设备之间的通信,并特别关注使用ddmlib库来创建一个简单的socket通信示例。我们将讨论以下几个关键知识点: 1. ADB (Android Debug Bridge):ADB是Android系统提供的一...
- **端口映射**:默认情况下,Android模拟器的端口与主机上的相同。例如,如果服务器在主机的8080端口监听,那么在模拟器中也要连接到8080端口。 4. **示例代码**: - 服务器端(Java): ```java ServerSocket...
在Android平台上进行网络编程时,Socket通信是一种常用的技术,它允许设备之间进行数据交换。本文主要探讨如何在Android中通过Socket实现两个模拟器之间的通信,特别是在一台PC上运行的情况。 首先,我们需要理解...
- Android应用需要获取网络权限,通过Socket编程或者使用HTTP库(如OkHttp或Retrofit)与PC服务器进行数据交换。 4. **服务器端实现**: - 在PC端,需要有一个服务器程序监听来自Android客户端的请求。这可能是一...
在开发过程中,经常需要在Android模拟器(emulator)与个人计算机(PC)之间建立通信,以便于进行测试、调试或者实现某些特定功能。其中,Socket编程是一种常见的实现方式,它能够使两个应用程序在不同的设备上进行...
如果是在模拟器或真机上测试,可能需要使用“10.0.2.2”作为服务器IP,这是Android模拟器对localhost的映射。 为了实现Android应用,你需要创建一个新的Android项目,并在活动中实现Socket通信逻辑。可以创建线程或...
- **服务器端脚本/应用**:PC端需要一个监听特定端口的服务器程序,接收来自Android客户端的指令并执行相应操作,如Python的socket服务器或Java的Socket服务器。 - **命令行接口(CLI)**:服务器端可能需要通过...
在Android设备上,我们需要创建一个服务器端Socket来监听特定端口,等待客户端的连接请求。一旦连接建立,服务器端将开始接收客户端发送的控制命令,并向客户端发送视频流数据。这个过程可能涉及到多线程处理,确保...
6. **PC服务器端开发**:在PC端,你需要一个服务器程序接收并解析来自Android的请求,然后执行相应的操作。这可以使用Java的ServerSocket类,或者其他服务器端框架如Node.js、Python的Flask或Django等实现。 7. **...
开发者可能使用Socket编程来创建客户端-服务器模型,实现数据的双向传输。在Android中,网络访问通常需要在主线程之外进行,以避免阻塞UI,因此需要了解AsyncTask或者IntentService等异步处理机制。 3. **JNI(Java ...