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();
             }
      }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值