`
xiangxingchina
  • 浏览: 520317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Socket网络通信

 
阅读更多

1.服务器程序:

Java代码  收藏代码
  1. package  com;  
  2.   
  3. import  java.io.BufferedReader;  
  4. import  java.io.BufferedWriter;  
  5. import  java.io.IOException;  
  6. import  java.io.InputStreamReader;  
  7. import  java.io.OutputStreamWriter;  
  8. import  java.io.PrintWriter;  
  9. import  java.net.ServerSocket;  
  10. import  java.net.Socket;  
  11. import  java.util.ArrayList;  
  12. import  java.util.List;  
  13. import  java.util.concurrent.ExecutorService;  
  14. import  java.util.concurrent.Executors;  
  15.   
  16. /**  
  17.  * com Server  
  18.  *   
  19.  * @author Aina.huang E-mail: 674023920@qq.com  
  20.  * @version 创建时间:2010 Jul 14, 2010 10:45:35 AM 类说明  
  21.  */   
  22. public   class  Main {  
  23.   
  24.     private   static   final   int  PORT =  9999 ; // 端口监听   
  25.     private  List<Socket> mList =  new  ArrayList<Socket>(); // 存放客户端socket   
  26.     private  ServerSocket server =  null ;  
  27.     private  ExecutorService mExecutorService =  null ; // 线程池   
  28.   
  29.     /**  
  30.      * @param args  
  31.      */   
  32.     public   static   void  main(String[] args) {  
  33.         // TODO Auto-generated method stub   
  34.         new  Main();  
  35.     }  
  36.   
  37.     public  Main() {  
  38.         try  {  
  39.             server = new  ServerSocket(PORT);  
  40.             mExecutorService = Executors.newCachedThreadPool();// 创建一个线程池   
  41.             System.out.println("Server Start..." );  
  42.             Socket client = null ;  
  43.             while  ( true ) {  
  44.                 client = server.accept();  
  45.                 mList.add(client);  
  46.                 mExecutorService.execute(new  Service(client)); // 开启一个客户端线程.   
  47.             }  
  48.         } catch  (Exception ex) {  
  49.             ex.printStackTrace();  
  50.         }  
  51.     }  
  52.   
  53.     public   class  Service  implements  Runnable {  
  54.   
  55.         private  Socket socket;  
  56.         private  BufferedReader in =  null ;  
  57.         private  String msg =  "" ;  
  58.   
  59.         public  Service(Socket socket) {  
  60.             this .socket = socket;  
  61.             try  {  
  62.                 in = new  BufferedReader( new  InputStreamReader(socket  
  63.                         .getInputStream()));  
  64.                 msg = "user:"  +  this .socket.getInetAddress() +  " come total:"   
  65.                         + mList.size();  
  66.                 this .sendmsg();  
  67.             } catch  (IOException e) {  
  68.                 e.printStackTrace();  
  69.             }  
  70.         }  
  71.   
  72.         public   void  run() {  
  73.             // TODO Auto-generated method stub   
  74.             try  {  
  75.                 while  ( true ) {  
  76.                     if  ((msg = in.readLine()) !=  null ) {  
  77.                         if  (msg.equals( "exit" )) {  
  78.                             System.out.println("sssssssssss" );  
  79.                             mList.remove(socket);  
  80.                             in.close();  
  81.                             msg = "user:"  + socket.getInetAddress()  
  82.                                     + " exit total:"  + mList.size();  
  83.                             socket.close();  
  84.                             this .sendmsg();  
  85.                             break ;  
  86.                         } else  {  
  87.                             msg = socket.getInetAddress() + " : "  + msg;  
  88.                             this .sendmsg();  
  89.                         }  
  90.                     }  
  91.   
  92.                 }  
  93.             } catch  (Exception ex) {  
  94.                 System.out.println("server 读取数据异常" );  
  95.                 ex.printStackTrace();  
  96.             }  
  97.         }  
  98.   
  99.         /**  
  100.          * 发送消息给所有客户端  
  101.          */   
  102.         public   void  sendmsg() {  
  103.             System.out.println(msg);  
  104.             int  num = mList.size();  
  105.             for  ( int  i =  0 ; i < num; i++) {  
  106.                 Socket mSocket = mList.get(i);  
  107.                 PrintWriter pout = null ;  
  108.                 try  {  
  109.                     pout = new  PrintWriter( new  BufferedWriter(  
  110.                             new  OutputStreamWriter(mSocket.getOutputStream())),  
  111.                             true );  
  112.                     pout.println(msg);  
  113.                 } catch  (IOException e) {  
  114.                     e.printStackTrace();  
  115.                 }  
  116.             }  
  117.         }  
  118.     }  
  119. }  



2.客户端程序:

Java代码  收藏代码
  1. package  com.Aina.Android;  
  2.   
  3. import  java.io.BufferedReader;  
  4. import  java.io.BufferedWriter;  
  5. import  java.io.InputStreamReader;  
  6. import  java.io.OutputStreamWriter;  
  7. import  java.io.PrintWriter;  
  8. import  java.net.Socket;  
  9.   
  10. import  android.app.Activity;  
  11. import  android.app.AlertDialog;  
  12. import  android.content.DialogInterface;  
  13. import  android.os.Bundle;  
  14. import  android.os.Handler;  
  15. import  android.os.Message;  
  16. import  android.util.Log;  
  17. import  android.view.View;  
  18. import  android.widget.Button;  
  19. import  android.widget.EditText;  
  20. import  android.widget.TextView;  
  21.   
  22. public   class  Test  extends  Activity  implements  Runnable {  
  23.     /** Called when the activity is first created. */   
  24.     private  TextView tv_msg =  null ;  
  25.     private  EditText ed_msg =  null ;  
  26.     private  Button btn_send =  null ;  
  27.     private  Button btn_login =  null ;  
  28.     private   static   final  String HOST =  "192.168.0.132" ;  
  29.     private   static   final   int  PORT =  9999 ;  
  30.     private  Socket socket =  null ;  
  31.     private  BufferedReader in =  null ;  
  32.     private  PrintWriter out =  null ;  
  33.     private  String content =  "" ;  
  34.   
  35.     @Override   
  36.     public   void  onCreate(Bundle savedInstanceState) {  
  37.         super .onCreate(savedInstanceState);  
  38.         setContentView(R.layout.main);  
  39.         tv_msg = (TextView) this .findViewById(R.id.TextView);  
  40.         ed_msg = (EditText) this .findViewById(R.id.EditText01);  
  41.         btn_login = (Button) this .findViewById(R.id.Button01);  
  42.         btn_send = (Button) this .findViewById(R.id.Button02);  
  43.         try  {  
  44.             socket = new  Socket(HOST, PORT);  
  45.             in = new  BufferedReader( new  InputStreamReader(socket  
  46.                     .getInputStream()));  
  47.             out = new  PrintWriter( new  BufferedWriter(  
  48.                     new  OutputStreamWriter(socket.getOutputStream())),  
  49.                     true );  
  50.         } catch  (Exception ex) {  
  51.             ex.printStackTrace();  
  52.             ShowDialog("登陆异常:"  + ex.getMessage());  
  53.         }  
  54.         btn_send.setOnClickListener(new  Button.OnClickListener() {  
  55.   
  56.             public   void  onClick(View v) {  
  57.                 // TODO Auto-generated method stub   
  58.                 String msg = ed_msg.getText().toString();  
  59.                 if  (socket.isConnected()) {  
  60.                     if  (!socket.isOutputShutdown()) {  
  61.                         out.println(msg);  
  62.                     }  
  63.                 }  
  64.             }  
  65.   
  66.         });  
  67.         new  Thread( this ).start();  
  68.     }  
  69.   
  70.     public   void  ShowDialog(String msg) {  
  71.         new  AlertDialog.Builder( this ).setTitle( "提示" ).setMessage(msg)  
  72.                 .setPositiveButton("OK" new  DialogInterface.OnClickListener() {  
  73.   
  74.                     public   void  onClick(DialogInterface dialog,  int  which) {  
  75.                         // TODO Auto-generated method stub   
  76.   
  77.                     }  
  78.   
  79.                 }).show();  
  80.     }  
  81.   
  82.     public   void  run() {  
  83.         try  {  
  84.             while  ( true ) {  
  85.                 if (socket.isConnected()){  
  86.                     if (!socket.isInputShutdown()){  
  87.                         if  ((content = in.readLine()) !=  null ) {  
  88.                             Log.i("TAG" "++ " +content);  
  89.                             content += "\n" ;  
  90.                             mHandler.sendMessage(mHandler.obtainMessage());  
  91.                         }else {  
  92.                               
  93.                         }  
  94.                     }  
  95.                 }  
  96.                   
  97.             }  
  98.         } catch  (Exception ex) {  
  99.             ex.printStackTrace();  
  100.         }  
  101.     }  
  102.   
  103.     public  Handler mHandler =  new  Handler() {  
  104.         public   void  handleMessage(Message msg) {  
  105.             super .handleMessage(msg);  
  106.             Log.i("TAG" "-- " +msg);  
  107.             tv_msg.setText(tv_msg.getText().toString() + content);  
  108.         }  
  109.     };  
  110. }  


Java代码  收藏代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  3.     android:orientation="vertical"  android:layout_width= "fill_parent"   
  4.     android:layout_height="fill_parent" >  
  5.     <TextView android:id="@+id/TextView"  android:singleLine= "false"   
  6.         android:layout_width="fill_parent"   
  7.         android:layout_height="wrap_content"  />  
  8.     <EditText android:hint="content"  android:id= "@+id/EditText01"   
  9.         android:layout_width="fill_parent"   
  10.         android:layout_height="wrap_content" >  
  11.     </EditText>  
  12.     <Button android:text="login"  android:id= "@+id/Button01"   
  13.         android:layout_width="fill_parent"   
  14.         android:layout_height="wrap_content" >  
  15.     </Button>  
  16.     <Button android:text="send"  android:id= "@+id/Button02"   
  17.         android:layout_width="fill_parent"   
  18.         android:layout_height="wrap_content" >  
  19.     </Button>  
  20. </LinearLayout> 
分享到:
评论

相关推荐

    android studio Socket客户端服务器通信 TCP/IP通信

    android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信

    Android socket即时通信

    Android Socket通信是Android应用开发中的一个重要部分,它允许应用程序通过网络与其他设备进行数据传输,实现客户端与服务器之间的实时通信。在这个场景中,"Android socket即时通信"涉及到在Android设备上创建...

    Android socket通信聊天,客户端+服务端

    在Android平台上进行网络通信时,Socket通信是一种常见且重要的方式,尤其在实现聊天应用时。本文将深入探讨如何在Android中实现基于Socket的客户端和服务端通信,以构建一个简单的聊天应用。 首先,让我们理解...

    android socket网络通信编程实例

    android socket网络通信编程实例,TCP/IP Socket、ServerSocket的形式。在JAVA编程中, 包来开发socket程序,下面列出所有常用的类,并简单介绍。再此说明一下:Socket仅仅是对TCP、UDP网络接口的封装,不涉及上层...

    Android基于局域网socket通信

    Socket是网络通信的一种接口,它提供了进程间通信(IPC)的能力,让两个设备能够通过Internet协议(IP)地址和端口号建立连接。在Android中,我们可以使用Java的内置Socket类来实现这一功能。 要构建一个Android...

    android socket通信实例程序

    在Android平台上进行网络通信时,Socket通信是一种常见且重要的方式,尤其在实现设备间的数据交换、服务器客户端交互等场景。本实例程序主要涉及到的是Android应用如何利用Socket进行TCP(Transmission Control ...

    C#与Android Socket通信

    Socket通信是一种基于TCP/IP协议族的网络通信方式,它允许两个网络应用程序通过网络进行数据交换。在本场景中,我们关注的是C#作为服务器端,Android作为客户端的Socket通信实现。这种通信方式常用于移动应用与后台...

    Android中Socket通信

    Socket是网络通信中的一个端点,它允许两个应用程序通过网络进行数据交换。在Android中,我们通常使用java.net.Socket和ServerSocket类来创建和管理Socket连接。ServerSocket用于监听客户端的连接请求,而Socket则...

    Android TCP Socket通信封装

    在Android开发中,TCP Socket通信是移动应用与服务器进行数据交互的一种常见方式。TCP(Transmission Control Protocol)...在实际开发中,根据项目需求对这些基础组件进行扩展和定制,以满足各种复杂的网络通信场景。

    android Socket通信源代码

    Socket是网络通信中的一个抽象概念,它代表了两个应用程序之间的网络连接。在Android中,我们通常使用Java的`java.net.Socket`类来创建和管理Socket。 2. **服务器端(Server)** - **创建ServerSocket**: 服务器...

    Android SOCKET开发的网络摄像头程序

    采用Android SOCKET开发的网络摄像头程序,接收网络传输过来的字节图片信息然后采用sufaceView实时显示

    android 简明Socket通信实例

    在Android开发中,Socket通信是实现设备间网络通信的重要手段,尤其在移动应用与服务器交互时,Socket扮演了关键角色。本实例将介绍如何在Android平台上进行简单的Socket通信,包括数据的发送和接收,以及如何解析...

    android socket UDP 通信

    在Android平台上进行网络通信时,Socket是不可或缺的一部分,特别是对于实时性要求较高的应用,UDP(User Datagram Protocol)常被选择,因为它提供了无连接的服务,数据传输速度快,开销小。本程序“android socket...

    android socket通信demo

    - **Socket接口**:Socket是Java提供的网络通信API,它为应用程序提供了一种在网络间发送和接收数据的方法。 - **TCP与UDP**:Socket分为两种类型,TCP(Transmission Control Protocol)和UDP(User Datagram ...

    Android Socket通信 demo

    Android 使用netty实现Socket通信demo+Sokit工具

    Android中socket通信简单实现

    Android中socket通信简单实现 socket通信需要有一个服务器和客户端,可以把同一个APP作为服务器跟客户端,也可以分开成两个APP。 先上个图: 这里以一个APP作为服务器跟客户端为示例 1、添加网络访问权限 2、写...

    Android Socket通信 PC与安卓 安卓与安卓都有

    5. **异常处理**:由于网络通信存在不可预测性,因此在编写Socket通信代码时,需要充分考虑各种可能的异常,如IOException、SocketException等,并进行适当的错误处理。 接下来,我们探讨一下Android设备之间的...

    android socket通信实例程序(下)

    在Android平台上进行网络通信时,Socket通信是一种常见且重要的方式,尤其在实现设备间的数据传输、服务器客户端交互等场景。本实例程序主要关注TCP Socket,它是一种面向连接、可靠的网络通信协议,确保数据的顺序...

    androidsocket资料

    10. **实战应用**:在提供的文件中,包括了各种示例代码和博客文章,如OiSoft在新浪博客上分享的Android Socket网络通信、Zhangshun在ChinaUnix博客上的Socket通讯讲解,以及tt_mc在博客园中关于Android与PC的Socket...

    Android socket 多用户通信

    在Android平台上进行网络通信时,Socket是一个至关重要的组件。Socket提供了进程间通信(IPC)的能力,使得设备可以与其他网络上的设备或服务器交换数据。在这个"Android Socket 多用户通信"的示例中,我们主要关注...

Global site tag (gtag.js) - Google Analytics