- Java核心技術·卷Ⅱ:高級特性(原書第10版)
- (美)凱S.霍斯特曼
- 800字
- 2020-10-30 18:10:55
4.1.2 用Java連接到服務器
程序清單4-1是我們的第一個網絡程序。它的作用與我們使用telnet工具是相同的,即連接到某個端口并打印出它所找到的信息。
程序清單4-1 socket/SocketTest.java


下面是這個簡單程序的幾行關鍵代碼:

第一行代碼用于打開一個套接字,它也是網絡軟件中的一個抽象概念,負責啟動該程序內部和外部之間的通信。我們將遠程地址和端口號傳遞給套接字的構造器,如果連接失敗,它將拋出一個UnknownHostException異常;如果存在其他問題,它將拋出一個IOException異常。因為UnknownHostException是IOException的一個子類,況且這只是一個示例程序,所以我們在這里僅僅捕獲超類的異常。
一旦套接字被打開,java.net.Socket類中的getInputStream方法就會返回一個InputStream對象,該對象可以像其他任何流對象一樣使用。而一旦獲取了這個流,該程序將直接把每一行打印到標準輸出。這個過程將一直持續到流發送完畢且服務器斷開連接為止。
該程序只適用于非常簡單的服務器,比如“當日時間”之類的服務。在比較復雜的網絡程序中,客戶端發送請求數據給服務器,而服務器可能在響應結束時并不立刻斷開連接。在本章的若干個示例程序中,都會看到我們是如何實現這種行為的。
Socket類非常簡單易用,因為Java庫隱藏了建立網絡連接和通過連接發送數據的復雜過程。實際上,java.net包提供的編程接口與操作文件時所使用的接口基本相同。
注意:本書所介紹的內容僅覆蓋了TCP(傳輸控制協議)網絡協議。Java平臺另外還支持UDP(用戶數據報協議)協議,該協議可以用于發送數據包(也稱為數據報),它所需付出的開銷要比TCP少得多。UDP有一個重要的缺點:數據包無需按照順序傳遞到接收應用程序,它們甚至可能在傳輸過程中全部丟失。UDP讓數據包的接收者自己負責對它們進行排序,并請求發送者重新發送那些丟失的數據包。UDP比較適合于那些可以忍受數據包丟失的應用,例如用于音頻流和視頻流的傳輸,或者用于連續測量的應用領域。
java.net.Socket 1.0
·Socket(String host,int port)
構建一個套接字,用來連接給定的主機和端口。
·InputStream getInputStream()
·OutputStream getOutputStream()
獲取可以從套接字中讀取數據的流,以及可以向套接字寫出數據的流。
- C++面向對象程序設計(第三版)
- Mastering Adobe Captivate 2017(Fourth Edition)
- Java應用開發與實踐
- Android Development with Kotlin
- Java 9 Programming Blueprints
- Android 9 Development Cookbook(Third Edition)
- OpenNI Cookbook
- 21天學通C++(第6版)
- C#應用程序設計教程
- Mastering Unity 2D Game Development(Second Edition)
- 軟件工程與UML案例解析(第三版)
- OpenCV 3.0 Computer Vision with Java
- 大學計算機應用基礎(Windows 7+Office 2010)(IC3)
- H5+移動營銷設計寶典
- C# 7.0本質論