Android開發入門——Socket編程

一、 Socket通訊模型以下: 服務器

應用程序經過套接字能夠進行通訊,可使用udp協議或者使用tcp協議,當客戶端和服務器端的協議時相對應的,客戶端使用tcp,那麼服務器端使用tcp  網絡

二、 UDP協議:把數據打包成數據包,而後直接發送對應的ip地址,速度快,可是不保證成功率,而且數據大小有限 socket

TCP協議:首先鏈接接收方,而後發送數據,保證成功率, 速度慢  tcp

三、 TCP通訊方式以下: spa

    

 

 

UDP通訊不使用InputStreamOutputStream  線程

四、 UDP通訊實現: server

UDP使用DatagramSocket對象來實現  對象

UDP的客戶端代碼實現以下: 進程

       public static void main(String[] args) { ip

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

五、  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();

           } 

相關文章
相關標籤/搜索