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

利用Socket進行Java網絡編程(一)

2013-11-23 19:15:55  來源: Java核心技術 

  作者 郗旻
  Socket是網絡上運行的兩個程序間雙向通訊的一端它既可以接受請求也可以發送請求利用它可以較為方便的編寫網絡上數據的傳遞在Java中有專門的Socket類來處理用戶的請求和響應利用Socket類的方法就可以實現兩台計算機之間的通訊這裡就介紹一下在Java中如何利用Socket進行網絡編程
    在Java中Socket可以理解為客戶端或者服務器端的一個特殊的對象這個對象有兩個關鍵的方法一個是getInputStream方法另一個是getOutputStream方法getInputStream方法可以得到一個輸入流客戶端的Socket對象上的getInputStream方法得到的輸入流其實就是從服務器端發回的數據流GetOutputStream方法得到一個輸出流客戶端Socket對象上的getOutputStream方法返回的輸出流就是將要發送到服務器端的數據流(其實是一個緩沖區暫時存儲將要發送過去的數據)
    程序可以對這些數據流根據需要進行進一步的封裝本文的例子就對這些數據流進行了一定的封裝(關於封裝可以參考Java中流的實現部分)
    為了更好的說明問題這裡舉了一個網上對話的例子客戶端啟動以後服務器會啟動一個線程來與客戶進行文字交流
    要完成這個工作需要完成三個部分的工作以下依次說明
    一建立服務器類
    Java中有一個專門用來建立Socket服務器的類名叫ServerSocket可以用服務器需要使用的端口號作為參數來創建服務器對象
  ServerSocket server = new ServerSocket()
    這條語句創建了一個服務器對象這個服務器使用號端口當一個客戶端程序建立一個Socket連接所連接的端口號為服務器對象server便響應這個連接並且serveraccept()方法會創建一個Socket對象服務器端便可以利用這個Socket對象與客戶進行通訊
  Socket incoming = serveraccept()
    進而得到輸入流和輸出流並進行封裝
  BufferedReader in = new BufferedReader(new
        InputStreamReader(incominggetInputStream()));
  PrintWriter out = new PrintWriter(incominggetOutputStream()true);
  隨後就可以使用inreadLine()方法得到客戶端的輸入也可以使用outprintln()方法向客戶端發送數據從而可以根據程序的需要對客戶端的不同請求進行回應
  在所有通訊結束以後應該關閉這兩個數據流關閉的順序是先關閉輸出流再關閉輸入流即使用
  outclose();
  inclose();
  

From:http://tw.wingwit.com/Article/program/Java/hx/201311/26548.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.