java中進行socket編程實現tcp、udp協議總結


socket編程

1,計算機進行通信編程的基礎是有ip地址加端口號的主機唯一標示、有相應的一致的協議即tcp/ip。ip地址用來區分主機,端口號用來區分計算機上不同的應用軟件。

2,java提供的網絡功能主要有四大類  

  1)InetAddress類,封裝ip地址代表網絡上的硬件資源。  

  2)URL,統一資源定位符

  3)Sockets:使用tcp協議實現網絡通信的Socket相關類  

  4)Datagram:使用udp協議,將數據保存在數據報中通過網絡進行通信的相關類。

3,InetAddress

  該類需要通過靜態方法InetAddress.getLocalHost()得到實例。 提供了得到主機名,ip地址等的方法,具體可查api文檔。該類可以得到本地主機和遠程主機的相關硬件信息。

4,URL

  類似這種的字符串叫url,利用該類可以得到url中的各種詳細信息,見代碼:

5,Socket類和ServerSocket類實現tcp連接

  基本原理是通過ServerSocket啟動監聽程序,Socket發起請求建立連接,並通過綁定在兩個對象上的InputStream,OutputSteam流來交換數據。

  練習實例思路:

  1)建立服務器端監聽程序並綁定端口,ServerSocket serverSocket = new ServerSocket(8888);  循環監聽程序,若有accept() 方法監聽到客戶端連接,建立socket連接,並啟動響應線程。

  2)建立客戶端程序,向服務器發送連接請求。Socket socket=new Socket("localhost", 8888);得到此socket上的輸出流,並封裝成打印流,向服務器發送字符消息。

  3)編寫服務器端響應的多線程處理程序ServerThread,此類為自己編寫非api,使用服務端建立的套接字通道,接收客戶端數據,並根據內容回復。

  總結: 1)ServerSocket的accept方法得到連接后返回一個Socket對象,即為對等客戶端的連接通道。服務端會有很多Socket對象。

      2)服務器端需要一個實現多線程的處理類,來並發的處理多個客戶端的請求。

        3)代碼詳見程序。

6,通過DatagramPacket、DatagramSocket類實現UDP通信。

  其中DatagramPacket表示udp通信的數據報類,通過構造方法可以將通信信息和要發送的地址保存到類中;DatagramSocket表示一次端到端的通信,傳入DatagramPacket信息,DatagramSocket的send方法表示發送。receive方法表示接收,並且是阻塞式的在得到數據報發入前不會進行任何操作!

7,整體總結

  1)不管是tcp還是udp服務器端肯定需要多線程,要注意設置線程優先級提高性能。

  2)tcp中,關閉了socket中的輸出流,則socket也關閉了,因此,可在連接中不關流,在確定沒有輸出輸入的時候再關閉socket;

  3)可不傳輸字符串,而使用ObjectInputStream和ObjectOutputStream傳輸對象

  4)結合io流的基本用法,可以用通訊類在不同的機器間發送文件。

  5) 兩個協議實現中receive方法和accept方法均為阻塞式的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM