Android 模拟器(JAVA)与C++ socket 通讯(IP设置)
2016-01-25 16:42
411 查看
原文:http://www.rosoo.net/a/201112/15430.html
android 模拟器使用的IP 地址为"127.0.0.1";使用PC机的端口号,在模拟器TCP连接调试之前必须使用android sdk 使用的工具进行一次端口映射。即使用 Sdk 中的Tools下abd 工具,在cmd 窗口中运行E://install//android//Android[/u]//android-sdk-windwows//tools//adb forward tcp:12581 tcp:31012" 前面目录为android sdk Tools 所在目录。根据本机情况而定。
如果有多个设备(模拟器或者真机)连接在PC上,可以指定设备:
adb -s <serialNumber> <command>
例如:adb -s HTC91245667 forward tcp:12581 tcp:31012程序C++[/u] 部分编程环境vs 2005 android 采用eclipse 下 android 2.1版本。测试通过。以下是完整源码:C++ 作为Client端// Client.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <Winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#define MAX_BUF_SIZE 1024
#define PORT_NUMBER 12581
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wSaData;
WORD dwSockVersion = MAKEWORD(2,2);
if (0 != WSAStartup(dwSockVersion,&wSaData)) //协商版本号
{
printf("Arrange Version Failure");
return -1;
}
SOCKET nSocket;
nSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //创建TCP socket
if (INVALID_SOCKET == nSocket)
{
printf("invalid socket");
WSACleanup();
return -1;
}
sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr("127.0.0.1");
sa.sin_port = htons(PORT_NUMBER);
if ( 0 != connect( nSocket,( const SOCKADDR * )&sa, sizeof(sa) ) )
return -1;
char buf[MAX_BUF_SIZE] = {0};
char tmp[MAX_BUF_SIZE] = {0};
strcpy(tmp,"this is Client!");
int nSend = send(nSocket, tmp, (int)strlen(tmp), 0);
int nRecv = 0;
nRecv = recv(nSocket, buf, MAX_BUF_SIZE, 0);
if (nRecv > 0)
{
printf("%s/n",buf);
}
closesocket(nSocket);
WSACleanup();
return 0;
}
Android 模拟器,JAVA作为Serve端package com.Android.SocketTest;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
public class SocketTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StartAcceptSocket();
}
private void StartAcceptSocket()
{
try
{
short nPort = 31012;
ServerSocket m_pServerSocket = new ServerSocket(nPort); //初始化socket
Socket pAccSocket = m_pServerSocket.accept(); //accept 阻塞等待
new RunningThread(pAccSocket).start(); //新建一个线程进行数据收发
}catch(Exception e)
{
e.printStackTrace();
}
}
public class RunningThread extends Thread
{
private Socket msocket = null;
RunningThread(Socket s)
{
this.msocket = s;
}
public void run()
{
byte [] pRecbyte = new byte[1024];
String sSend = "hello Client! this is Server";
byte [] pSendByte = new byte[1024];
pSendByte = sSend.getBytes();
while(true)
{
try
{
DataInputStream sRead = new DataInputStream(msocket.getInputStream()); //读取
int nRec = sRead.read(pRecbyte);
if(nRec > 0 )
{
//System.out.println("receive client message success!");
DataOutputStream sWrite = new DataOutputStream(msocket.getOutputStream());
sWrite.write(pSendByte); //发送
break;
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
}
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(521) | 评论(0) | 转发(0) |
0
上一篇:Java socket示例(demo)TCP/IP
下一篇:基于 Android NDK 的学习之旅-----环境搭建[Eclipse ADT集成Cygwin编译]
相关热门文章
SHTML是什么_SSI有什么用...
shell中字符串操作
卡尔曼滤波的原理说明...
关于java中的“错误:找不到或...
shell中的特殊字符
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
android 模拟器使用的IP 地址为"127.0.0.1";使用PC机的端口号,在模拟器TCP连接调试之前必须使用android sdk 使用的工具进行一次端口映射。即使用 Sdk 中的Tools下abd 工具,在cmd 窗口中运行E://install//android//Android[/u]//android-sdk-windwows//tools//adb forward tcp:12581 tcp:31012" 前面目录为android sdk Tools 所在目录。根据本机情况而定。
如果有多个设备(模拟器或者真机)连接在PC上,可以指定设备:
adb -s <serialNumber> <command>
例如:adb -s HTC91245667 forward tcp:12581 tcp:31012程序C++[/u] 部分编程环境vs 2005 android 采用eclipse 下 android 2.1版本。测试通过。以下是完整源码:C++ 作为Client端// Client.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <Winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#define MAX_BUF_SIZE 1024
#define PORT_NUMBER 12581
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wSaData;
WORD dwSockVersion = MAKEWORD(2,2);
if (0 != WSAStartup(dwSockVersion,&wSaData)) //协商版本号
{
printf("Arrange Version Failure");
return -1;
}
SOCKET nSocket;
nSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //创建TCP socket
if (INVALID_SOCKET == nSocket)
{
printf("invalid socket");
WSACleanup();
return -1;
}
sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr("127.0.0.1");
sa.sin_port = htons(PORT_NUMBER);
if ( 0 != connect( nSocket,( const SOCKADDR * )&sa, sizeof(sa) ) )
return -1;
char buf[MAX_BUF_SIZE] = {0};
char tmp[MAX_BUF_SIZE] = {0};
strcpy(tmp,"this is Client!");
int nSend = send(nSocket, tmp, (int)strlen(tmp), 0);
int nRecv = 0;
nRecv = recv(nSocket, buf, MAX_BUF_SIZE, 0);
if (nRecv > 0)
{
printf("%s/n",buf);
}
closesocket(nSocket);
WSACleanup();
return 0;
}
Android 模拟器,JAVA作为Serve端package com.Android.SocketTest;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
public class SocketTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StartAcceptSocket();
}
private void StartAcceptSocket()
{
try
{
short nPort = 31012;
ServerSocket m_pServerSocket = new ServerSocket(nPort); //初始化socket
Socket pAccSocket = m_pServerSocket.accept(); //accept 阻塞等待
new RunningThread(pAccSocket).start(); //新建一个线程进行数据收发
}catch(Exception e)
{
e.printStackTrace();
}
}
public class RunningThread extends Thread
{
private Socket msocket = null;
RunningThread(Socket s)
{
this.msocket = s;
}
public void run()
{
byte [] pRecbyte = new byte[1024];
String sSend = "hello Client! this is Server";
byte [] pSendByte = new byte[1024];
pSendByte = sSend.getBytes();
while(true)
{
try
{
DataInputStream sRead = new DataInputStream(msocket.getInputStream()); //读取
int nRec = sRead.read(pRecbyte);
if(nRec > 0 )
{
//System.out.println("receive client message success!");
DataOutputStream sWrite = new DataOutputStream(msocket.getOutputStream());
sWrite.write(pSendByte); //发送
break;
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
}
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(521) | 评论(0) | 转发(0) |
0
上一篇:Java socket示例(demo)TCP/IP
下一篇:基于 Android NDK 的学习之旅-----环境搭建[Eclipse ADT集成Cygwin编译]
相关热门文章
SHTML是什么_SSI有什么用...
shell中字符串操作
卡尔曼滤波的原理说明...
关于java中的“错误:找不到或...
shell中的特殊字符
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- 新手使用android studio遇到的问题
- Android 笔记 AutoCompleteTextView day8
- Android NDK中使用socket
- Android 模拟器(JAVA)与C++ socket 通讯(IP设置)
- ADT20新建项目Android Support library not installed问题
- ADT20新建项目Android Support library not installed问题
- Android中使用Sqlite数据库
- Android 中沉浸式状态栏实现
- Android ListView 几个重要属性
- iOS与PHP/Android AES128 ECB NoPadding加密
- android 震动的实现
- android 如何创建配置文件和读配置文件
- android 程序启动界面的短暂黑屏解决办法
- Android点击EditText之外地方隐藏键盘
- Android关于JavaScript与Native方法相互调用
- Android 的 AlarmManager 和 wakeLock联合使用
- PullToRefresh开源库
- Android遇到的那些坑
- Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键事件
- [Android]自定义圆形图片