`
isiqi
  • 浏览: 16881152 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

PC客户端与Android服务端的Socket同步通信(USB)

阅读更多

需求:

1.一个android端的service后台运行的程序,作为socket的服务器端;用于接收Pc client端发来的命令,来处理数据后,把结果发给PC client

2.PC端程序,作为socket的客户端,用于给android手机端发操作命令

难点分析:

1.手机一定要有adb模式,即插上USB线时马上提示的对话框选adb。好多对手机的操作都可以用adb直接作。

不过,我发现LG GW880就没有,要去下载个

2.android默认手机端的IP为“127.0.0.1”

3.要想联通PC与android手机的sokcet,一定要用adb forward 来作下端口转发才能连上socket.

4.android端的service程序Install到手机上容易,但是还要有方法来从PC的client端来启动手机上的service ,这个办法可以通过PC端adb命令来发一个Broastcast,手机端再写个接收BroastcastReceive来接收这个Broastcast,在这个BroastcastReceive来启动service

pc端命令:

android端的代码:ServiceBroadcastReceiver.java

5.由于是USB连接,所以socket就可以设计为一但连接就一直联通,即在new socket和开完out,in流后,就用个while(true){}来循环PC端和android端的读和写

android的代码:

6.如果是在PC端和android端的读写操作来while(true){}循环,这样socket流的结尾不好判断,不能用“-1”来判断,因为“-1”是只有在socket关闭时才作为判断结尾。

7.socket在out.write(bytes);时,要是数据太大时,超过socket的缓存,socket自动分包发送,所以对方就一定要用循环来多次读。最好的办法就是服务器和客户端协议好,比如发文件时,先写过来一个要发送的文件的大小,然后再发送文件;对方用这个大小,来循环读取数据。

android端接收数据的代码:

8.socket的最重要的机制就是读写采用的是阻塞的方式,如果客户端作为命令发起者,服务器端作为接收者的话,只有当客户端client用out.writer()写到输出流里后,即流中有数据service的read才会执行,不然就会一直停在read()那里等数据。

9.还要让服务器端可以同时连接多个client,即服务器端用new thread()来作数据读取操作。

源码:

客户端(pc端):

testPcClient.java

android服务器端:

主类androidService.java

用于接收PC发来的Broastcast并启动主类service的ServiceBroadcastReceiver.java

用于新socket连接的读写线程类ThreadReadWriterIOSocket.java

后面是两个辅助类:

分享到:
评论

相关推荐

    PC客户端与Android服务端的Socket同步通信

    ### PC客户端与Android服务端的Socket同步通信 #### 需求分析 在现代移动设备与个人电脑(PC)之间的通信中,实现稳定的双向数据传输变得越来越重要。本篇将详细介绍如何构建一个基于Socket的同步通信系统,其中...

    PC客户端与Android服务端的Socket同步通信.docx

    ### PC客户端与Android服务端的Socket同步通信 #### 概述 在现代移动应用开发中,经常需要实现PC客户端与Android设备之间的数据交互。本文档将详细介绍如何通过Socket同步通信技术,实现PC客户端与Android服务端的...

    PC客户端与Android服务端的Socket同步通信(USB)

    在IT领域,尤其是在移动设备和桌面系统的交互中,"PC客户端与Android服务端的Socket同步通信(USB)"是一个重要的技术主题。这个话题涉及到多个关键知识点,包括Android的USB通信、Socket编程以及客户端-服务器架构...

    PC客户端与Android服务端的Socket同步通信(USB) demo

    标题中的“PC客户端与Android服务端的Socket同步通信(USB)demo”指的是一个示例项目,它演示了如何使用Socket编程实现PC(个人计算机)与Android设备通过USB接口进行双向通信。这种通信方式通常用于开发者调试、...

    pc与android通过usb socket实现手机通信Demo

    a.PC客户端与Android服务端的Socket同步通信(USB) b.操作步骤如下: ----------------------------------------------------------- 1.请将测试数据文件夹中的ucliulanqi.apk copy到c:\下进行测试 2. 将android...

    PC端与android端通信

    在这个场景中,通信分为两部分:Android服务端(作为socket服务器)和PC客户端(作为socket客户端)。Android服务端是一个后台运行的Service程序,监听特定端口(例如10086),等待接收来自PC的命令。当命令到达时,...

    Android学习笔记含JNI、USB和ftdi通信方式详解

    这通常涉及到客户端和服务端的交互,客户端可能采用WebSocket或者HTTP协议与服务端进行通信,同时还需要考虑消息的实时性和持久化存储等问题。 #### 项目七:Android串口通信 串口通信在Android设备与外部硬件之间...

Global site tag (gtag.js) - Google Analytics