Socket編程
1.網絡基礎知識
例子:兩臺計算機之間進行通信,需要有一個標識,也就是IP地址
其次兩者之間的語言應該一致,這裏的語言指的是協議,只有遵循了相同的協議,
兩者才能正常的通信,另外,每臺計算機都有相應的端口號
Image1:
TCP/IP是目前世界上應用最廣泛的協議,是以TCP和IP爲基礎的不同層次上多個協議的集合,也稱TCP/IP協議族或者TCP/IP協議棧
TCP:Transmission Control Protocol 傳輸控制協議
IP:Internet Protocol 互聯網協議
TCP/IP四層模型
數據鏈路層,網絡層,傳輸層,應用層
七層模型與四層模型的關係以及區別
1.從發展歷程看:七層模型是先有理論支撐再有實踐,而四層模型是先有實踐然後根據實踐在仿照七層模型提出了四層模型。
2.從實用性看:七層模型是理論模型,而四層模型被廣泛運用,成爲互聯網的標準
Image2:
IP地址:
爲實現網絡中不同計算機之間的通信,每臺機器必須有一個唯一的標識--IP地址
常見格式:192.168.25.130
端口:
1.用於區分不同的應用程序
2.端口號範圍爲0~65535,其中0~1023爲系統所保留
3.IP地址和端口號組成了Socket,Socket是網絡上運行程序之間雙向通信鏈路的終結點,是TCP/UDP的基礎
4.http : 80 ftp : 21 telnet : 23
Java中的網絡支持:
1.InetAddress:用於標識網絡上的硬件資源
2.URL:統一資源定位符,通過URL可以直接讀取或者寫入網絡中的數據
3.Sockets:使用TCP協議實現網絡通信的Socket相關的類
4.Datagram:使用UDP協議,將數據保存到數據報中,通過網絡進行通信
2.InetAddress
3.URL
4.TCP編程
TCP協議是面向連接、可靠的、有序的,以字節流的方式發送數據
基於TCP協議實現網絡通信的類
客戶端的Socket類
服務端的ServerSocket類
Image4:
實現步驟:
1.創建ServerSocket和Socket
2.打開連接到Socket的輸入/輸出流
3.按照協議對Socket進行讀/寫操作
4.關閉輸入輸出流、關閉Socket
可參照項目裏的代碼
5.UDP編程
UDP協議(用戶數據報)是無連接、不可靠的、無序的,進行傳輸時,首先需要將傳輸的數據定義爲數據報(Datagram),在數據報中指明數據所要到達的Socket(主機地址和端口號),然後再將數據報發送出去、
基於UCP協議實現通信的類
DatagramPacket:表示數據報包
DatagramSocket:進行端到端通信的類
服務端實現的步驟:
1.創建DatagramSocket,指定端口號
2.創建DatagramPacket
3.接收客戶端發送的數據信息
4.讀取數據
客戶端的實現步驟:
1.定義發送信息
2.創建DatagramPacket,包含要發送的消息
3.創建DatagramSocket
4.發送數據
問題總結:
-
1.多線程的優先級,因爲在多線程的情況下,未設置優先級可能會導致運行時速度非常慢,可降低優先級
2.對於同一個Socket,如果關閉了輸出流,則與該輸出流關聯的socket也會被關閉,所以一般不用關閉流,直接關閉socket即可
3.在案例中使用的是字符串的傳輸,然後在實際的過程中是以對象的形式,所以這裏要使用到對象的序列化操作,傳遞對象
4.socket編程傳遞文件