
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 通讯 分享所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)