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

2016-02-19 09:42 22 1 收藏

下面图老师小编跟大家分享一个简单易学的Android 模拟器(JAVA)与C++ socket 通讯 分享教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

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("%sn",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:installandroidAndroidandroid-sdk-windwowstoolsadb forward tcp:12581 tcp:31012" 前面目录为android sdk  Tools 所在目录。根据本机情况而定。

来源:https://www.tulaoshi.com/n/20160219/1591813.html

延伸阅读
模拟器(emulator.exe) 可以在 Android SDK 的安装目录下的 tools 文件夹找到运行文件(F:GPhoneandroid-sdk-windows-1.0_r1 ools),双击运行模拟器。 安装 APK 包 adb install [-l] [-r] - push this package file to the device and install it '-l' means forward-lock the app '-r' means reinstall the app, keeping its data 例如:a...
psp模拟器怎么用?   JPCSP是用于PC端的PSP游戏模拟器。JPCSP Ver 1.390 Extremum独家新版模拟器可以兼容直接引导普罗模块的游戏。 ① 运行模拟器前必须安装最新的JAVA支持库: ② 建议安装SONY的SonicStage软件可以辅助解码音乐: ③ 破解版6.XX固件的游戏需要手动去除普罗模块: 运行模拟器必要程序:ppsspp模...
标签: 服务器
Dolphin模拟器怎么用 Dolphin的前身是一款NGC模拟器,在重新改制后已经可以在中等配置PC上全速模拟绝大多数Wii游戏,尤其可以支持原生Wii控制器,是玩家首选的Wii模拟器。就目前来说,Wii模拟器Dolphin已经比较成熟(对电脑的配置要求属于中高水平),能模拟运行很多Wii游戏。 Dolphin模拟器图文使用教程 运行模拟器执行文件Dol...
Java跨平台的特性使Java越来越受开发人员的欢迎,但也往往会听到不少的抱怨:用Java开发的图形用户窗口界面每次在启动的时候都会跳出一个控制台窗口,这个控制台窗口让本来非常棒的界面失色不少。怎么能够让通过Java开发的GUI程序不弹出Java的控制台窗口呢?其实现在很多流行的开发环境例如JBuilder、Eclipse都是使用纯Java开发的集成环境...
小鸡模拟器如何设置   自1.2.1版更新后除了如旧版般可设置图片加载选项、恢复按键外,还加入了清除图片缓存和语言设置。新版本修改了语言设置的UI,使之显示得更加简洁。 这里可以对下载目录及本地游戏目录进行设置,你可以将游戏下载目录设定在外置SD卡里,这样就不怕占用手机自带存储体了。 此外,这里还可对各平台...

经验教程

609

收藏

12
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部