Socket编程在安卓开发中的应用

Socket作为一种网络编程的接口,俗称“套接字”,通常用于描述IP地址和端口号,是一种用于通信的句柄。应用程序通常通过套接字向网络发出请求或响应网络请求。在安卓开发中,用于实现客户端与服务器之间的通信除了针对HTTP进行网络通信的方法之外,另外一种就是Socket网络编程了。
Socket通信一般可以分为两种:一种是基于TCP协议的可靠传输,另一种是基于UDP协议的不可靠传输。下面,我就以TCP协议为例来实现安卓应用程序中客户端与服务器端进行通信的过程。
创建两个项目分别为Service和Client用来表示服务器和客户端,在Service中创建一个SocketActivity的类,那么服务器实现TCP通信的关键代码可以描述如下:

class ServerThread extends Tread{
     public void run{
         //声明一个ServerSocket对象;
         ServerSocket serversocket=null;
         try{
            //创建一个ServerSocket对象,并让这个对象在4567端口监听;
            serversocket=new ServerSocket(4567);
            //调用ServerSocket的accept()方法,接受客户端所发送的请求;
            Socket socket=serversocket.accept();
            //从Socket当中得到InputStream对象;
            InputStream inputstream=socket.getInputStream();
            byte buffer[]=new byte[1024*4];
            int temp=0;
            //从InputStream对象中读取客户端所发送的数据;
            while((temp=inputstream.read(buffer))!=-1){
                system.out.println(new String(buffer,0,temp));
           }
         }catch(IOException e){
             e.printStackTrace();
         }
         finally{
             try{
                serversocket.close();
             }catch(IOException e){
                e.printStackTrace();
             }
         }
     }
}

在Client中创建一个TCPClient的类,客户端与服务器端进行通信的关键代码可以描述如下:

public class TCPClient{
      public static void main(String args[]){
            try{
                //创建一个Socket对象,指定服务器端的IP地址和端口号;
                Socket socket=new Socket("192.168.1.104",4567);
                //使用InputStream读取硬盘上的文件;
                InputStream inputstream=new FileInputStream("f://file/words.txt");
                //从socket当中得到OutputStream;
                OutputStream outputstream=socket.getOutputStream();
                byte buffer[]=new byte[1024*4];
                int temp=0;
                //将InputStream当中的数据取出,并写入到OutputStream当中;
                while((temp=inputstream.read(buffer))!=-1){
                     outputstream.write(buffer,0,temp);
                }
                outputstream.flush();
            }catch(IOException e){
                e.printStackTrace();
             }
      }
}

你可能感兴趣的:(Socket编程在安卓开发中的应用)