91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA中怎么利用socket進行網絡編程

發布時間:2021-08-10 16:19:13 來源:億速云 閱讀:111 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關JAVA中怎么利用socket進行網絡編程,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

一、建立服務器

Java中有一個專門用來建立Socket服務器的類,名叫ServerSocket,可以用服務器需要使用的端口號作為參數來創建服務器對象。

ServerSocket server = new ServerSocket(9998)

這條語句創建了一個服務器對象,這個服務器使用9998號端口。當一個客戶端程序建立一個Socket連接,所連接的端口號為9998時,服務器對象server便響應這個連接,并且server.accept()方法會創建一個Socket對象。服務器端便可以利用這個Socket對象與客戶進行通訊。

Socket incoming = server.accept()

進而得到輸入流和輸出流,并進行封裝

BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));  PrintWriter out = new PrintWriter(incoming.getOutputStream(),true);

隨后,就可以使用in.readLine()方法得到客戶端的輸入,也可以使用out.println()方法向客戶端發送數據。從而可以根據程序的需要對客戶端的不同請求進行回應。

在所有通訊結束以后應該關閉這兩個數據流,關閉的順序是先關閉輸出流,再關閉輸入流,即使用:

out.close();  in.close();

二、建立客戶端代碼

相比服務器端,客戶端要簡單一些,客戶端只需用服務器所在機器的ip以及服務器的端口作為參數創建一個Socket對象。得到這個對象后,就可以用"建立服務器"部分介紹的方法實現數據的輸入和輸出。

Socket socket = new Socket("168.160.12.42",9998);  in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  out = new PrintWriter(socket.getOutputStream(),true);

以上的程序代碼建立了一個Socket對象,這個對象連接到ip地址為168.160.12.42的主機上、端口為9998的服務器對象。并且建立了輸入流和輸出流,分別對應服務器的輸出和客戶端的寫入。

三、建立用戶界面

讀者可以根據自己的喜好建立自己的用戶界面,這不是本文的重點。

經過以上三個步驟,就可以建立一個比較簡單的對話程序。但是,為了使這個程序更加完善,應進行以下幾個改進:

一、現在服務器只能服務一個客戶,也就是單線程的。可以將它改進為多線程服務器。

try   { file://建立服務器     ServerSocket server = new ServerSocket(9998);     int i=1;     for(;;)     {    Socket incoming = server.accept();    new ServerThread(incoming,i).start();    i++;     }    }catch (IOException ex){ ex.printStackTrace(); }

循環檢測是否有客戶連接到服務器上,如果有,則創建一個線程來服務這個客戶,這個線程的名稱是ServerThread,這個類擴展了Thread類,它的編寫方法與前述的服務器的寫法相同。

二、為了可以隨時得到對方傳送過來的消息,可以在服務器以及客戶端各建立一個獨立的線程來察看輸入流,如果輸入流中有輸入,則可以即時顯示出來。代碼如下:

new Thread()  {   public void run()   {  try {    while(true)   {  checkInput();  sleep(1000);//每1000毫秒檢測一次   }  }catch (InterruptedException ex)   {   }catch(IOException ex)   {  }   }  }.start();

其中的checkInput()方法為:

private void checkInput() throws IOException  {   String line;   if((line=in.readLine())!=null) file://檢測輸入流中是否有新的數據  t.setPartner(line); file://將數據流中的消息顯示出來  }

以上就是JAVA中怎么利用socket進行網絡編程,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滨州市| 秦安县| 武城县| 巍山| 磐石市| 宿州市| 宁河县| 贵州省| 泌阳县| 平安县| 溧阳市| 金堂县| 固安县| 洞口县| 达孜县| 西青区| 任丘市| 德州市| 汤阴县| 醴陵市| 威信县| 龙里县| 陆河县| 岳阳县| 象山县| 连南| 玛曲县| 鄯善县| 合江县| 封丘县| 诸暨市| 文安县| 巴中市| 巴彦淖尔市| 商城县| 集安市| 临武县| 武安市| 武穴市| 曲松县| 太谷县|