在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.println("Client1: " + clIEntSocket1);
// 取得一個網頁
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 ");
// 讀出回應
String responseLine;
while ((responseLine = inbound.readLine()) != null)
{
// 把每一行顯示出來
System.out.println(responseLine);
if ( responseLine.indexOf("") != -1 )
break;
}
// 清除
outbound.close();
inbound.close();
clIEntSocket.close();
}
catch (IOException ioe)
{
System.out.println("IOException: " + ioe);
}
}
}