原文:
android 模拟器使用的IP 地址为"127.0.0.1";使用PC机的端口号,在模拟器TCP连接调试之前必须使用android sdk 使用的工具进行一次端口映射。即使用 Sdk 中的Tools下abd 工具,在cmd 窗口中运行
E://install//android////android-sdk-windwows//tools//adb forward tcp:12581 tcp:31012" 前面目录为android sdk Tools 所在目录。根据本机情况而定。
如果有多个设备(模拟器或者真机)连接在PC上,可以指定设备:
adb -s
例如:adb -s HTC91245667 forward tcp:12581 tcp:31012
程序 部分编程环境vs 2005 android 采用eclipse 下 android 2.1版本。测试通过。以下是完整源码:
C++ 作为Client端
-
-
-
- #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);
- 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 {
-
- @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 pAccSocket = m_pServerSocket.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 )
- {
-
- DataOutputStream sWrite = new DataOutputStream(msocket.getOutputStream());
- sWrite.write(pSendByte);
- break;
- }
- }catch(Exception e)
- {
- e.printStackTrace();
- }
- }
- }
- }
- }
阅读(1339) | 评论(0) | 转发(0) |