1. 程式人生 > >JAVA IO-網路流

JAVA IO-網路流

網路

網路作為一種常見的資料來源和目標媒介。網路之間的通訊也就會涉及到傳輸層和網際層的TCP/IP協議;通過TCP/IP協議,我們可以很方便的在兩臺不同的計算機之間進行資料的通訊。

JAVA網路基礎

JAVA IO的API,使我們可以很方便的建立TCP或UDP套接字,在網路之間進行通訊。通常情況下,一個C/S架構中,一個標準的TCP工作方式為:一個客戶端開啟一個連線服務端的TCP/IP連線,然後客戶端和服務端進行通訊,當通訊結束後,關閉連線。而一個UDP工作方式則和TCP大有不同:UDP是一個無連線的協議,也就是說客戶端和服務端只負責傳送資料,而不管資料的接收方是否已經接收到資料。也正是這種不可靠的資料傳輸,讓UDP比TCP少了很多的協議開銷。

JAVA IO網路API

  1. TCP 協議中,JAVA通過Socket和ServerSockt來資料通訊。
  2. UDP協議中,JAVA通過DatagramSocket來資料通訊。
  3. URL+URLConnection來建立Http服務連線,進行資料通訊。

不管基於何種的資料通訊,其網路的資料通訊都是通過JAVA IO流的InputStream和OutoutStream來實現的。

一個簡單的JAVA網路例子

public static String getStrByUrlConnection(String spec) {
        String result = null;
        try
{ URL url = new URL(spec); URLConnection urlConnection = url.openConnection(); /* send get request default */ urlConnection.setDoInput(true); /* send post request, communication through url.getOutputStream */ // urlConnection.setDoOutput(true);
// OutputStream outputStream = urlConnection.getOutputStream(); InputStream inputStream = urlConnection.getInputStream(); result = stream2Str(inputStream); } catch (IOException e) { return null; } return result; } private static String stream2Str(InputStream inputStream) { StringBuffer sb = new StringBuffer(); byte[] buf = new byte[1024]; int len = -1; try { while ((len = inputStream.read(buf)) != -1) { sb.append(new String(buf, 0, len, "utf-8")); } } catch (IOException e) { return null; } return sb.toString(); }