Android 模拟器(JAVA)与C++ socket 通讯 分享

Android 模拟器(JAVA)与C++ socket 通讯 分享,第1张

概述C++作为Client端viewplaincopytoclipboardprint?复制代码代码如下://Client.cpp:Definestheentrypointfortheconsoleapplication.    //    #include\"stdafx.h\" &nbs C++ 作为ClIEnt端
vIEw plaincopy to clipboardprint?
复制代码 代码如下:
// ClIEnt.cpp : defines the entry point for the console application.    
//    
#include "stdafx.h"    
#include     
#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端
vIEw plaincopy to clipboardprint?
复制代码 代码如下:
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(); 
                } 
            } 
        } 
    } 


 androID 模拟器使用的IP 地址为"127.0.0.1";使用PC机的端口号,在模拟器TCP连接调试之前必须使用androID sdk 使用的工具进行一次端口映射。如图所示。即使用 Sdk 中的Tools下abd 工具,在cmd 窗口中运行E:\\install\\androID\\AndroID\\androID-sdk-winDWows\\tools\\adb forward tcp:12581 tcp:31012" 前面目录为androID sdk  Tools 所在目录。根据本机情况而定。 总结

以上是内存溢出为你收集整理的Android 模拟器(JAVA)与C++ socket 通讯 分享全部内容,希望文章能够帮你解决Android 模拟器(JAVA)与C++ socket 通讯 分享所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1142552.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存