最近做一个系统,需要用到网络编程,没有接触过。
android手机做客户端,想完成类似于新浪微博手机客户端的程序。以前做过PC网络编程,使用SOCKET通信方式。但是大家都知道,socket通信是利用IP地址通信的。现在要用手机与互联网通信,手机是没有IP的终端,怎么和服务器端建立连接。能否用socket通信实现这样的服务?如果可以,在这中间是不是电信服务商做了某些转化(手机号码<---> ip)看到网络上大部分都是使用http连接实现与服务器的连接,请问能用socket吗?如果可以,请详细说明一下过程。

解决方案 »

  1.   

    “手机是没有IP的终端,怎么和服务器端建立连接”?这块和PC机是一样的,都是通过IP网络。
      

  2.   


    比如我现在的服务器网站IP为:222.222.222.222。可以直接在android上面通过socket ,连接到该网站吗?该网站返回信息的时候是怎样一个过程?先发送到电信服务商然后转发到手机上吗?
      

  3.   

    都一样的,都是通过SOCKET来实现的,不过android上面是JAVA的API而已
      

  4.   


    手机通过PPP与服务商的网络相连.  手机是有ip地址的.  你服务器主动连接这个ip是不行的. 这个ip是内部网的ip. 你连接不上.  而客户端连接服务器是可以的. 因为你的服务器ip是公网ip  就合手机上网看网页原理一致 . 是手机发给服务商,服务商更换ip包头,端口等以后再转发出去,收到的包, 根据端口区分,然后再转发到你的那个内部ip上. 就是一个内部网的转发机制 . 你如果自己用过路由器的应该知道.
      

  5.   

    手机是有ip地址的,当你进行网络请求是,运营商会给你分配一个ip地址,是运营商的局域网址
      

  6.   

    整个过程和你通过局域网访问网站一样的流程,通过soket监听可以实现的。
      

  7.   

    手机是有IP的,wifi网络那就是和电脑一样的由路由器分配IP地址,如果是mobile网络则是由APN分配内部IP地址,我记得好像是NAT技术吧,不过这个IP地址我是研究了几天都没搞定的
    建议用http要好点
      

  8.   


    因为现在的服务器还没有搭建起来,现在主要是做个测试。而且服务器端只提供一些信息的查询,简单的功能,所以想使用socket会简单一点。C/S架构。
      

  9.   

    手机上网  跟你在NAT后面是一样的
      

  10.   


    用http更简单啊,iis、apache之类WEB服务已经把什么都包装好了,一般情况下不要再去重复发明轮子
      

  11.   

    新浪微博手机客户端 是通过HTTP的服务端通信的。你可以查看他开放API,上面也有还有一个例子。服务端用REST的模式。http://open.t.sina.com.cn/wiki/index.php/SDK#Android
      

  12.   

    不过它的那个开放的SDK里面是有问题,新浪的工程师对这个也不怎么负责任,随便整一下就放出来了。所以有问题时你最好自己设断点跟踪一下,有几个地方要自己修改。