熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java語言的Socket類[1]

2013-11-23 19:38:23  來源: Java核心技術 
    當客戶程序需要與服務器程序通訊的時候客戶程序在客戶機創建一個socket對象Socket類有幾個構造函數兩個常用的構造函數是 Socket(InetAddress addr int port) 和 Socket(String host int port)兩個構造函數都創建了一個基於Socket的連接服務器端流套接字的流套接字對於第一個InetAddress子類對象通過addr參數獲得服務器主機的IP地址對於第二個函數host參數包被分配到InetAddress對象中如果沒有IP地址與host參數相一致那麼將拋出UnknownHostException異常對象兩個函數都通過參數port獲得服務器的端口號假設已經建立連接了網絡API將在客戶端基於Socket的流套接字中捆綁客戶程序的IP地址和任意一個端口號否則兩個函數都會拋出一個IOException對象

  如果創建了一個Socket對象那麼它可能通過調用Socket的 getInputStream()方法從服務程序獲得輸入流讀傳送來的信息也可能通過調用Socket的 getOutputStream()方法獲得輸出流來發送消息在讀寫活動完成之後客戶程序調用close()方法關閉流和流套接字下面的代碼創建了一個服務程序主機地址為端口號為的Socket對象然後從這個新創建的Socket對象中讀取輸入流然後再關閉流和Socket對象

  Socket s = new Socket ( );

  InputStream is = sgetInputStream ();

  // Read from the stream

  isclose ();

  sclose ();

  接下面我們將示范一個流套接字的客戶程序這個程序將創建一個Socket對象Socket將訪問運行在指定主機端口上的服務程序如果訪問成功客戶程序將給服務程序發送一系列命令並打印服務程序的響應List使我們創建的程序SSClient的源代碼

  Listing : SSClientjava

  // SSClientjava

  import javaio*;

  import javanet*;

  class SSClient

  {public static void main (String [] args)

   {String host = localhost;

  // If user specifies a commandline argument that argument

  // represents the host name

  if (argslength == )

   host = args [];

  BufferedReader br = null;

  PrintWriter pw = null;

  Socket s = null;

  try

  {// Create a socket that attempts to connect to the server

   // program on the host at port

   s = new Socket (host );

   // Create an input stream reader that chains to the socket´s

   // byteoriented input stream The input stream reader

   // converts bytes read from the socket to characters The

   // conversion is based on the platform´s default character

   // set

   InputStreamReader isr;

[]  []  []  


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27216.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.