感谢支持
我们一直在努力

Android 开发之Socket编程 UDP和TCP通信实现

1、 Socket通信模型如下:





应用程序通过套接字可以进行通信,可以使用udp协议或者使用tcp协议


当客户端和服务器端的协议时相对应的,客户端使用tcp,那么服务器端使用tcp


 


2、 UDP协议:把数据打包成数据包,然后直接发送对应的ip地址,速度快,但是不保证


成功率,并且数据大小有限


TCP协议:首先连接接收方,然后发送数据,保证成功率, 速度慢




 



3、 TCP通信方式如下:


    


 


 


UDP通信不使用InputStreamOutputStream 


4、 UDP通信实现:


UDP使用DatagramSocket对象来实现 


UDP的客户端代码实现如下:


       public static void main(String[] args) {


       try {


           //首先创建一个DatagramSocket对象


           DatagramSocket socket = new DatagramSocket(4567);


           //创建一个InetAddree


InetAddress serverAddress = InetAddress.getByName(“192.168.1.104”);


           String str = “hello”;  //这是要传输的数据


           byte data [] = str.getBytes();  //把传输内容分解成字节


           //创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、


地址,以及端口号


           DatagramPacket packet = new


 DatagramPacket(data,data.length,serverAddress,4567);


           //调用socket对象的send方法,发送数据


           socket.send(packet);


       catch (Exception e) {


           // TODO Auto-generated catch block


           e.printStackTrace();


       }


}



 


 UDP的服务端代码实现如下:


//创建一个DatagramSocket对象,并指定监听的端口号


              DatagramSocket socket = new DatagramSocket(4567);


              byte data [] = new byte[1024];


              //创建一个空的DatagramPacket对象


               DatagramPacket packet = 


new DatagramPacket(data,data.length);


              //使用receive方法接收客户端所发送的数据,


              //如果客户端没有发送数据,该进程就停滞在这里


              socket.receive(packet);


              String result = new 


String(packet.getData(),packet.getOffset(),


packet.getLength());


        System.out.println(“result—>” + result);


 



5、  TCP通信的实现:


TCP使用Socket对象


 


TCP协议客户端实现:


//创建一个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[4*1024];


           int temp = 0 ;


           //InputStream当中的数据取出,并写入到OutputStream当中


           while((temp = inputStream.read(buffer)) != -1){


              outputStream.write(buffer, 0, temp);


           }


           outputStream.flush();


       



   TCP协议服务器端现实:


       //声明一个ServerSocket对象


        ServerSocket serverSocket = null;


        try {


                //创建一个ServerSocket对象,并让这个Socket4567端口监听


              serverSocket = new ServerSocket(4567);


        //调用ServerSocketaccept()方法,接受客户端所发送的请求,


//如果客户端没有发送数据,那么该线程就停滞不继续


              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) {


              // TODO Auto-generated catch block


              e.printStackTrace();


           }


            serverSocket.close();



           

赞(0) 打赏
转载请注明出处:服务器评测 » Android 开发之Socket编程 UDP和TCP通信实现
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏