程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java收集編程基本教程之Socket入門實例

Java收集編程基本教程之Socket入門實例

編輯:關於JAVA

Java收集編程基本教程之Socket入門實例。本站提示廣大學習愛好者:(Java收集編程基本教程之Socket入門實例)文章只能為提供參考,不一定能成為您想要的結果。以下是Java收集編程基本教程之Socket入門實例正文


當我們想要在Java中應用TCP/IP經由過程收集銜接到辦事器時,就須要創立java.net.Socket對象並銜接到辦事器。假設願望應用Java NIO,也能夠創立Java NIO中的SocketChannel對象。

創立Socket

上面的示例代碼是銜接到IP地址為78.64.84.171辦事器上的80端口,這台辦事器就是我們的Web辦事器(www.jb51.net),而80端口就是Web辦事端口。

Socket socket = new Socket("78.46.84.171", 80);

我們也能夠像以下示例中應用域名取代IP地址:

Socket socket = new Socket("jb51.net", 80);

Socket發送數據

要經由過程Socket發送數據,我們須要獲得Socket的輸入流(OutputStream),示例代碼以下:

Socket socket = new Socket("jb51.net", 80);
OutputStream out = socket.getOutputStream();

out.write("some data".getBytes());
out.flush();
out.close();

socket.close();

代碼異常簡略,然則想要經由過程收集將數據發送到辦事器端,必定不要忘卻挪用flush()辦法。操作體系底層的TCP/IP完成會先將數據放入一個更年夜的數據緩存塊中,而緩存塊的年夜小是與TCP/IP的數據包年夜小相順應的。(譯者注:挪用flush()辦法只是將數據寫入操作體系緩存中,其實不包管數據會立刻發送)

Socket讀取數據

從Socket中讀取數據,我們就須要獲得Socket的輸出流(InputStream),代碼以下:

Socket socket = new Socket("jb51.net", 80);
InputStream in = socket.getInputStream();

int data = in.read();
//... read more data...

in.close();
socket.close();

代碼也其實不龐雜,但須要留意的是,從Socket的輸出流中讀取數據其實不能讀取文件那樣,一向挪用read()辦法直到前往-1為止,由於對Socket而言,只要當辦事端封閉銜接時,Socket的輸出流才會前往-1,而是現實上辦事器其實不會一直地封閉銜接。假定我們想要經由過程一個銜接發送多個要求,那末在這類情形下封閉銜接就顯得異常愚昧。

是以,從Socket的輸出流中讀取數據時我們必需要曉得須要讀取的字節數,這可以經由過程讓辦事器在數據中告訴發送了若干字節來完成,也能夠采取在數據末尾設置特別字符標志的方法連完成。

封閉Socket

當應用完Socket後我們必需將Socket封閉,斷開與辦事器之間的銜接。封閉Socket只須要挪用Socket.close()辦法便可,代碼以下:

Socket socket = new Socket("jb51.net", 80);

socket.close();

(全文完)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved