Windows客户端与Android服务端的Socket通信
来源:互联网 发布:四川泸州网络歌手大赛 编辑:程序博客网 时间:2024/05/19 03:41
Windows客户端与Android服务端的Socket通信
本帖最后由 simon.zhou 于 2010-6-6 01:38 编辑
这篇原来发在CSDN我的BLOG上,转来这里发下:
最近做的项目中有功能需求要在客户使用PC体验程序时,同时通知与PC通过USB数据线相连的OPhone手机打开相应的网站。故需要编写Windows客户端与Android服务端的Socket通信程序。由于我对OMS系统没有研究,故想直接写Android SDK 1.1的程序应该OMS上也是可以运行的。
1、Android服务端:
复制代码
2、C#客户端:
复制代码
简单说明一下:
(1)在Android中,在打开USB调试的情况下使用USB数据线插入PC后,Android与PC会创建虚拟网络,并且IP为127.0.0.1。但在一些OPhone手机中,使用127.0.0.1确无法连接成功。这时可自行设置IP:
set ADBHOST=192.168.10.1
adb kill-server
adb start-server
(2)这里使用了一个新的线程来侦听和打开网站的工作,以避免造成主UI线程的阻塞。
(3)由于我对这块功能之前没有做过,故一定会有很多可以改进的地方。
这篇原来发在CSDN我的BLOG上,转来这里发下:
最近做的项目中有功能需求要在客户使用PC体验程序时,同时通知与PC通过USB数据线相连的OPhone手机打开相应的网站。故需要编写Windows客户端与Android服务端的Socket通信程序。由于我对OMS系统没有研究,故想直接写Android SDK 1.1的程序应该OMS上也是可以运行的。
1、Android服务端:
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.net.ServerSocket;
- import java.net.Socket;
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- public class G3Exp extends Activity{
- /** Called when the activity is first created. */
- //定义侦听端口号
- final int SERVER_PORT = 10086;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //开一个新的线程来侦听客户端连接及发来的信息和打开相应网站
- new Thread(){
- public void run(){
- startServer();
- }
- }.start();
- }
- private void startServer()
- {
- try
- {
- ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
- //循环侦听客户端连接请求
- while (true)
- {
- Socket client = serverSocket.accept();
- try
- {
- //等待客户端发送打开网站的消息
- BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
- String str = in.readLine();
- openUrl(str);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- client.close();
- }
- Thread.sleep(3000);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- private void openUrl(String url)
- {
- Uri uri = Uri.parse(url);
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- startActivity(intent);
- }
- }
2、C#客户端:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Net.Sockets;
- using System.Diagnostics;
- namespace G3Exp.Class
- {
- public static class clsAndroid
- {
- static private void Connect(String server, String message)
- {
- try
- {
- //通过SDK下面的ADB命令来通知Android开侦听10086端口
- Process p = new Process();
- p.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory+@"/tools/adb.exe";
- p.StartInfo.Arguments = "forward tcp:12580 tcp:10086";
- p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
- p.Start();
- Int32 port = 12580;
- TcpClient client = new TcpClient(server, port);
- //把URL发给TCP服务端
- Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
- NetworkStream stream = client.GetStream();
- stream.Write(data, 0, data.Length);
- client.Close();
- }
- catch (ArgumentNullException e)
- {
- Console.WriteLine("ArgumentNullException: {0}", e);
- }
- catch (SocketException e)
- {
- Console.WriteLine("SocketException: {0}", e);
- }
- }
- public static void OpenWeb(string strUrl)
- {
- Connect("127.0.0.1", strUrl);
- }
- }
- }
简单说明一下:
(1)在Android中,在打开USB调试的情况下使用USB数据线插入PC后,Android与PC会创建虚拟网络,并且IP为127.0.0.1。但在一些OPhone手机中,使用127.0.0.1确无法连接成功。这时可自行设置IP:
set ADBHOST=192.168.10.1
adb kill-server
adb start-server
(2)这里使用了一个新的线程来侦听和打开网站的工作,以避免造成主UI线程的阻塞。
(3)由于我对这块功能之前没有做过,故一定会有很多可以改进的地方。
- Windows客户端与Android服务端的Socket通信
- Windows客户端与Android服务端的Socket通信(USB
- Windows客户端与Android服务端的Socket通信(USB)
- php服务端与android客户端socket通信
- php服务端与android客户端socket通信
- php服务端与android客户端socket通信
- php服务端与android客户端socket通信
- PC客户端与Android服务端的Socket同步通信
- PC客户端与Android服务端的Socket同步通信
- 客户端与服务端的Socket通信
- socket客户端与服务端的通信
- socket通信 客户端与服务端
- Android(客户端)通过socket与QT(服务端)通信
- MFC_SOCKET_关于socket的服务端与客户端的通信
- C服务端与java客户端的socket通信注意事项
- 基于tcp的socket通信(单个客户端与服务端)
- Java Socket客户端与C#服务端的通信
- PC客户端与Android服务端的Socket同步通信(USB)
- MultiByteToWideChar和WideCharToMultiByte用法详解
- Java 内存管理原理、内存泄漏实例及解决方案研究
- [经验总结]Perl模块使用 => 简短例子代码集合
- 使用CBitmapButton类创建位图按钮
- LR8.1中文版下载(红色最新下载地址)
- Windows客户端与Android服务端的Socket通信
- 使用正则表达式去掉字符串左右空格
- android 使用socket与pc传递对象的问题
- http://java.sun.com/javase/6/webnotes/trouble/TSG-Desktop/html/java2d.html
- 禁止开机时自动启动软件
- java连接sql server2005
- android Socket连接【java.net包实现的socket连接client】
- 谈百度收录动态地址
- multiple repeats