<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 本節引言: > 本節給大家帶來Socket的最后一節:基于UDP協議的Socket通信,在第一節中我們已經詳細地 比較了兩者的區別,TCP和UDP最大的區別在于是否需要客戶端與服務端建立連接后才能進行 數據傳輸,如果你學了前兩節TCP的,傳輸前先開服務端,accept,等客戶端接入,然后獲得 客戶端socket然后進行IO操作,而UDP則不用,UDP以數據報作為數據的傳輸載體,在進行傳輸時 首先要把傳輸的數據定義成數據報(Datagram),在數據報中指明數據要到達的Socket(主機地址 和端口號),然后再將數據以數據報的形式發送出去,然后就沒有然后了,服務端收不收到我就 不知道了,除非服務端收到后又給我回一段確認的數據報~時間關系就不另外寫Android例子了 直接上Java代碼~ * * * ## 1.服務端實現步驟: > **Step 1**:創建DatagramSocket,指定端口號 > **Step 2**:創建DatagramPacket > **Step 3**:接收客戶端發送的數據信息 > **Step 4**:讀取數據 **示例代碼**: ~~~ public class UPDServer { public static void main(String[] args) throws IOException { /* * 接收客戶端發送的數據 */ // 1.創建服務器端DatagramSocket,指定端口 DatagramSocket socket = new DatagramSocket(12345); // 2.創建數據報,用于接收客戶端發送的數據 byte[] data = new byte[1024];// 創建字節數組,指定接收的數據包的大小 DatagramPacket packet = new DatagramPacket(data, data.length); // 3.接收客戶端發送的數據 System.out.println("****服務器端已經啟動,等待客戶端發送數據"); socket.receive(packet);// 此方法在接收到數據報之前會一直阻塞 // 4.讀取數據 String info = new String(data, 0, packet.getLength()); System.out.println("我是服務器,客戶端說:" + info); /* * 向客戶端響應數據 */ // 1.定義客戶端的地址、端口號、數據 InetAddress address = packet.getAddress(); int port = packet.getPort(); byte[] data2 = "歡迎您!".getBytes(); // 2.創建數據報,包含響應的數據信息 DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port); // 3.響應客戶端 socket.send(packet2); // 4.關閉資源 socket.close(); } } ~~~ * * * ## 2.客戶端實現步驟: > **Step 1**:定義發送信息 > **Step 2**:創建DatagramPacket,包含將要發送的信息 > **Step 3**:創建DatagramSocket > **Step 4**:發送數據 ~~~ public class UDPClient { public static void main(String[] args) throws IOException { /* * 向服務器端發送數據 */ // 1.定義服務器的地址、端口號、數據 InetAddress address = InetAddress.getByName("localhost"); int port = 8800; byte[] data = "用戶名:admin;密碼:123".getBytes(); // 2.創建數據報,包含發送的數據信息 DatagramPacket packet = new DatagramPacket(data, data.length, address, port); // 3.創建DatagramSocket對象 DatagramSocket socket = new DatagramSocket(); // 4.向服務器端發送數據報 socket.send(packet); /* * 接收服務器端響應的數據 */ // 1.創建數據報,用于接收服務器端響應的數據 byte[] data2 = new byte[1024]; DatagramPacket packet2 = new DatagramPacket(data2, data2.length); // 2.接收服務器響應的數據 socket.receive(packet2); // 3.讀取數據 String reply = new String(data2, 0, packet2.getLength()); System.out.println("我是客戶端,服務器說:" + reply); // 4.關閉資源 socket.close(); } } ~~~ ## 本節小結: 本節內容比較簡單,無非就是將數據轉換為字節,然后放到**DatagramPacket**(數據報包中),發送的 時候帶上接受者的IP地址和端口號,而接收時,用一個字節數組來緩存!發送的時候需要創建一個?**DatagramSocket**(端到端通信的類)對象,然后調用send方法給接受者發送數據報包~ 本節代碼來源于慕客網上的一個JavaSocket教程~有興趣的可以看看:?[Java Socket應用---通信是這樣練成的](http://www.imooc.com/learn/161)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看