您的位置:首页 > 移动开发 > Android开发

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...

给主人留下些什么吧!~~

评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: