Android手机做Server,PC做Client,现在程序在模拟器上调试没有问题,然后在真机上Server没有反应,另外可能要用到adb forward tcp:localport tcp:deviceport,但是也还是不能成功.
请大侠们帮我想想办法:
PC(Server)c++:
WORD wVersion;
WSADATA wsdata;
int err; wVersion = MAKEWORD(1,1);
err = WSAStartup(wVersion,&wsdata);
if (err != 0)
{
MessageBox(NULL,L"Load Socket error!",L"",NULL);
return;
}
if (LOBYTE (wsdata.wVersion )!= 1 || HIBYTE(wsdata.wVersion) != 1)
{
    MessageBox(NULL,L"Load Socket version error!",L"",NULL);
WSACleanup();
return;
} SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0);
    if (sockSrv == INVALID_SOCKET )
{
MessageBox(NULL,L"Create socket object error!",NULL,NULL);
} SOCKADDR_IN addrsrv;
addrsrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrsrv.sin_family = AF_INET;
addrsrv.sin_port = htons(8000); bind(sockSrv,(SOCKADDR*)&addrsrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrclient;
int len = sizeof(SOCKADDR);
    while (1)
{
SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrclient,&len);
#if 1
MessageBox(NULL,L"Server4000 received a message!",NULL,NULL);
#endif
char szdata[100] = {0};
char newszdata[200] = {0};
recv(sockConn,szdata,100,0);
sprintf(newszdata,"the server 4000 received data is:%s",szdata);
#if 1
MessageBoxA(NULL,newszdata,NULL,NULL);
#endif
 //       send(sockConn,"how are you!",strlen("how are you"),0);
//after use the socket,must release the socket object
closesocket(sockConn);
}smartphone:client(java)
             String message = mEditText.getText().toString() + "\r\n";  
                Log.v("TAG", message);
                
                Socket socket = null;
                try    
                {       
                    socket = new Socket("10.129.85.93",8000);  
                 
                    PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);         
                    out.println(message);                      
                    out.close();   
                    socket.close();    
                }   
                catch (Exception e)    
                {   
                    Log.e(DEBUG_TAG, e.toString());   
                }   
}

解决方案 »

  1.   

    没有看你的代码,但是给你一个建议,看懂android的adb通信方式,然后用socket的方式去做同步,数据通过adb来传输就好。这个100%可以做出来的。另外手机端的server一定要有root权限,我想你是用会将server编译到source code中的,所以这个不是问题。
      

  2.   

    我也是用SOCKET方式来做同步的,另外,现在我pc改成server,手机改成client,模拟器上可以同步.
    楼上大哥能说得详细一点吗?还是说我的方法不对?
      

  3.   

    具体的细节我没有设计过,只能说一些思想性的东西,希望对你有帮助。
    因为android本身是server-client的模式,核心部分是server,client只能从server取东西。
    另外我想你的工具想要sych,就需要获得足够的权限去运行,如果是client可能不方便。建议你还是将手机作为server,而PC作为client。保护手机的数据安全是工具的首要目的。
      

  4.   

    没问题的,手机端作为server,通过adb forward映射某个端口,server监听端口就可以了,我就是这么做的
      

  5.   

    楼上的。你在真机环境下测过的,还是在模拟机上测的?我在模拟机上也测试过了,也行的
    但是真机上不行。另外adb forward tcp:xxx tcp:xxx 你是这样用adb forward的吗?
    另外在client端你是指定的PC的IP ADDRESS吗?
      

  6.   

    usb传输被虚拟成一个网络,如果你只是想利用adb来传东西,那基本不用改,adb的命令足够你使用,复杂点用缺省的5037端口来传输数据即可。如果想自己扩展的话,就写个server端的程序来监听某个端口,当时为了抓图,写了个简单的server端,监听要用的端口。
      

  7.   

    用的是真机
    举个例子:adb forward tcp:1234 tcp:1234
    pc侧ip:127.0.0.1pc侧直接向127.0.0.1:1234发送数据,手极端监听1234端口即可
      

  8.   

    5037是adb绑定的固定端口,你的意思是我在PC(server)监视5037端口,然后手机把数据传到5037就可以了吗?
      

  9.   

    OK.我懂你的意思,我也这样写过,不过那时server没收到数据,很奇怪
      

  10.   

    你有QQ或者MSN吗?我加一下你。这个问题困扰我N长时间了
      

  11.   

    对了,你adb serer启动没,需启动adb serer。adb分为client,server,两者都运行在pc侧,手极端为adbd。你看进程管理器中有没有adb进程,没有的话,adb shell下启动server。
      

  12.   

    启动了。在进程管理器里可以看到的。
    可以给我你的QQ或者MSN,thank you for replaying~
      

  13.   

    在公司的话,一般都是工程机,abd shelll有root权限就可以。
      

  14.   

    没有root权限,我用的机子是HTC magic
      

  15.   

    开发的话,一般还是有root权限的机器比较方便
      

  16.   

    是啊。那如果没有ROOT权限的话就不可以用SOCKET来进行通信了?
      

  17.   

    ok.解决,结贴,真机可以解决,SMARTPHOE as server,pc as client,原来是我同事手机端程序出现BUG导致以为通信不了
      

  18.   

    你好,你的同步是怎么做的啊,如果用socket同步的话,真机上是不是必须要用wifi连入到当前局域网啊,如果不连入,是不是不行
      

  19.   

    回楼上的,不需要的,手机插上电脑,通过USB组成一个虚拟的局域网,然后通过adb forward 转接IP地址就可以了。
    如果你给分的话我可考虑一下把代码给你。呵呵~~~哈哈。
    明天上班我在来。
      

  20.   

    楼主你好!我现在也在研究Android同步问题。能指导下吗?比如说着手点 及android的那些包?
      

  21.   

    就是通过socket啊。手机端sqlite数据库进行查询,PC端socket进行接收
      

  22.   

    楼主你好,我也在做手机同步软件,想问一下为什么要通过socket来进行同步,不是adb可以直接push吗
      

  23.   

    楼主你好,我也在做手机同步软件,想问一下为什么要通过socket来进行同步,不是adb可以直接push和pull吗吗
      

  24.   

    楼主好 我现在正在做android手机同步的程序 也是遇到了权限的问题你能发给我一份源码吗 我给分O(∩_∩)O哈哈~
      

  25.   

    我也在研究这个呢,但是想通过wifi的模式,不知道有没有做成的
      

  26.   

    我也在研究这个呢,但是想通过wifi的模式,不知道有没有做成的,给你个地址能不能帮我解决啊!感激不尽http://topic.csdn.net/u/20110228/14/b98c3acc-e7f9-4d16-8882-6be05bc3ba92.html?seed=1909598537&r=73308660#r_73308660