android与服务器通过socket通信

时间:2022-10-22 17:59:11

接触过socket很多次了,但始终不太理解socket的网络传输机制。今天专门在网上查找了一下关于socket的android前后台的简单通信,http://blog.csdn.net/ameyume/article/details/8146143,这篇博客书写规范,注释清晰,关于socket讲得很透彻。

      客户端:s=new socket(ip,port);

                    读消息:

                     BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream));//运用BufferedReader和InputStreamReader估计是为了提高读取效率

                      message=br.readLine();

                      发消息:

                   PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamReader(s.getOutputStream),true));//关于PrintWriter与BufferedWriter的区别请http:      //computerhenu.iteye.com/blog/1745617

                   out.println(message);

                   out.flush();


    服务器端:ss=new ServerSocket(port);

                        while(true){//服务器端一直在运行等待客户端发送socket,对于一个新的socket,服务器则建立一个新的socket.

                                Socket s=ss.accept();

                           读消息:与客户端完全相同

                          

                          发消息:与客户端程序完全相同

                         }


总结:在一般的网络运用中,socket已经是最底层的网络接口,在一般的库中,比如C,JAVA,C#语言库中都是通过socket来进行网络进程通信。但如果要弄清楚socket,建议还是看下socket的具体代码。由上面分析可知,服务器和客户端一旦建立网络连接后就处于对等的地位。只不过服务器端有一个公开的号码(ip),它需要不断监听,被动等待响应客户端的请求。


------------------------------------------------------------2015.4.9补充---------------------------------------------

前面测试是在局域网下测试的。具体是在PC机开了一个热点,手机连接上去,相当PC机就是一个小局域网的结点。而如果测试环境没有局域网,那就利用另外一种USB通信方式,据说要用到ADB.还可以利用模拟器和PC机之间的通信。

      http://blog.sina.com.cn/s/blog_8a86f4dd01010nul.html这个帖子是讲android模拟器当客户端,电脑当服务器使用的,经过测试没有问题。注意IP一定为android的固定通信ip--10.0.2.2.

      也可以利用android客户端当服务器,pc机器当客户端通信,也可以通过多个模拟器之间进行通信,但需要窗口重定向。http://warnerhit.iteye.com/blog/1415793这个帖子有讲到,但是没有测试过。