国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java Socket編程(二) Java面向連接的類

2019-11-17 06:10:29
字體:
來源:轉載
供稿:網友
java面向連接的類

Sockets有兩種主要的操作方式:面向連接的和無連接的.面向連接的sockets操作就像一部電話,他們必須建立一個連接和一人呼叫.所有的事情在到達時的順序與它們出發時的順序時一樣.無連接的sockets操作就像是一個郵件投遞,,沒有什么保證,多個郵件可能在到達時的順序與出發時的順序不一樣.

到底用哪種模式是郵應用程序的需要決定的.假如可靠性更重要的話,用面向連接的操作會好一些.比如文件服務器需要他們的數據的正確性和有序性.假如一些數據丟失了,系統的有效性將會失去.一些服務器,比如間歇性地發送一些數據塊.假如數據丟了的話,服務器并不想要再重新發過一次.因為當數據到達的時候,它可能已經過時了.確保數據的有序性和正確性需要額外的操作的內存消耗,額外的費用將會降低系統的回應速率.

無連接的操作使用數據報協議.一個數據報是一個獨立的單元,它包含了所有的這次投遞的信息.把它想象成一個信封吧,它有目的地址和要發送的內容.這個模式下的socket不需要連接一個目的的socket,它只是簡單地投出數據報.無連接的操作是快速的和高效的,但是數據安全性不佳.

面向連接的操作使用TCP協議.一個這個模式下的socket必須在發送數據之前與目的地的socket取得一個連接.一旦連接建立了,sockets就可以使用一個流接口:打開-讀-寫-關閉.所有的發送的信息都會在另一端以同樣的順序被接收.面向連接的操作比無連接的操作效率更低,但是數據的安全性更高.

SUN一直是網絡建設的支持者,所以在Java中支持sockets就不足為奇了.實際上,Java降低了建立一個sockets程序的難度.每一個傳輸模式都被封裝到了不同的類中.面向連接的類將會首先被我們討論.

在Java中面向連接的類有兩種形式,它們分別是客戶端和服務器端.客戶端這一部分是最簡單的,所以我們先討論它.

列表9.1列出了一個簡單的客戶端的程序.它向一個服務器發出一個請求,取回一個Html文檔,并把它顯示在控制臺上.

9.1一個簡單的socket客戶端

import java.io.*;
import java.net.*;
/**
* 一個簡單的從服務器取回一個HTML頁面的程序
* 注重:merlin是本地機器的名字
*/
public class SimpleWebClient {
public static void main(String args[])
{
try
{
// 打開一個客戶端socket連接
Socket clientSocket1 = new Socket("merlin", 80);
System.out.// 取得一個網頁
getPage(clientSocket1);
}
catch (UnknownHostException uhe)
{
System.out.println("UnknownHostException: " + uhe);
}
catch (IOException ioe)
{
System.err.println("IOException: " + ioe);
}
}
/**
*通過建立的連接請求一個頁面,顯示回應然后關閉socket
*/
public static void getPage(Socket clientSocket)
{
try
{
// 需要輸入和輸出流
DataOutputStream outbound = new DataOutputStream(
clientSocket.getOutputStream() );
DataInputStream inbound = new DataInputStream(
clientSocket.getInputStream() );
// 向服務器發出HTTP請求
outbound.writeBytes("GET / HTTP/1.0/r/n/r/n");
// 讀出回應
String responseLine;
while ((responseLine = inbound.readLine()) != null)
{
// 把每一行顯示出來
System.out.println(responseLine);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 包头市| 漯河市| 新丰县| 黔东| 南丹县| 陕西省| 灌阳县| 赫章县| 东丰县| 阳原县| 泰宁县| 类乌齐县| 积石山| 积石山| 习水县| 巍山| 大姚县| 祁连县| 清新县| 舞钢市| 嘉善县| 霍州市| 大理市| 长子县| 万宁市| 乌苏市| 嵊州市| 竹山县| 禄丰县| 子长县| 滦平县| 宁津县| 宝兴县| 岢岚县| 青铜峡市| 镇沅| 土默特右旗| 乐昌市| 临夏市| 红安县| 津南区|