JavaSocket線程的設(shè)計原理是什么

這篇文章主要講解了“Java Socket線程的設(shè)計原理是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java Socket線程的設(shè)計原理是什么”吧!

創(chuàng)新互聯(lián)公司是少有的成都網(wǎng)站建設(shè)、網(wǎng)站制作、營銷型企業(yè)網(wǎng)站、成都微信小程序、手機APP,開發(fā)、制作、設(shè)計、買友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,于2013年開始,堅持透明化,價格低,無套路經(jīng)營理念。讓網(wǎng)頁驚喜每一位訪客多年來深受用戶好評

Java Socket線程我們經(jīng)常會用到的技術(shù),但是有很多程序員還是有不少的使用問題,下面我們就看看如何才能進(jìn)行有關(guān)的代碼編寫,希望大家又說收獲。網(wǎng)絡(luò)的偉大之一也是信息共享,Server可以主動向所有Client廣播消息,同時Client也可以向其它Client發(fā)布消息。

下面看看如何開發(fā)一個可以實時傳遞消息的程序。

Java Socket線程的設(shè)計原理:

服務(wù)器端接受客戶端的連接請求,同時啟動一個線程處理這個連接,線程不停的讀取客戶端輸入,然后把輸入加入隊列中,等候處理。在線程啟動的同時將線程加入隊列中,以便在需要的時候定位和取出。

{源碼}

import java.io.*;   import java.net.*;   import java.util.*;   import java.lang.*;   public class Server extends ServerSocket   {   private static ArrayList User_List = new ArrayList();   private static ArrayList Threader = new ArrayList();   private static LinkedList Message_Array = new LinkedList();   private static int Thread_Counter = 0;   private static boolean isClear = true;   protected static final int SERVER_PORT = 10000;   protected FileOutputStream LOG_FILE = new FileOutputStream("d:/connect.log", true);   public Server() throws FileNotFoundException, IOException   {   super(SERVER_PORT);   new Broadcast();   //append connection log   Calendar now = Calendar.getInstance();   String str = "[" + now.getTime().toString() + "] Accepted a connection1512";   byte[] tmp = str.getBytes();   LOG_FILE.write(tmp);   try   {   while (true)   {   Socket socket = accept();   new CreateServerThread(socket);   }   }   finally   {   close();   }   }   public static void main(String[] args) throws IOException   {   new Server();   }   //--- Broadcast   class Broadcast extends Thread   {   public Broadcast()   {   start();   }   public void run()   {   while (true)   {   if (!isClear)   {   String tmp = (String)Message_Array.getFirst();   for (int i = 0; i < Threader.size(); i++)   {   CreateServerThread client = (CreateServerThread)Threader.get(i);   client.sendMessage(tmp);   }  Message_Array.removeFirst();   isClear = Message_Array.size() > 0 ? false : true;   }   }   }   }   //--- CreateServerThread   class CreateServerThread extends Thread   {   private Socket client;   private BufferedReader in;   private PrintWriter out;   private String Username;   public CreateServerThread(Socket s) throws IOException   {   client = s;   in = new BufferedReader(new InputStreamReader(client.getInputStream()));   out = new PrintWriter(client.getOutputStream(), true);   out.println("--- Welcome to this chatroom ---");   out.println("Input your nickname:");   start();   }   public void sendMessage(String msg)   {   out.println(msg);   }   public void run()   {   try   {   int flag = 0;   Thread_Counter++;   String line = in.readLine();   while (!line.equals("bye"))   {   if (line.equals("l"))   {   out.println(listOnlineUsers());   line = in.readLine();   continue;   }   if (flag++ == 0)   {   Username = line;   User_List.add(Username);   out.println(listOnlineUsers());   Threader.add(this);   pushMessage("[< " + Username + " come on in >]");   }   else   {   pushMessage("<" + Username + ">" + line);   }   line = in.readLine();   }   out.println("--- See you, bye! ---");   client.close();   }   catch (IOException e)   {}   finally   {   try   {  client.close();   }   catch (IOException e)   {}   Thread_Counter--;   Threader.remove(this);   User_List.remove(Username);   pushMessage("[< " + Username + " left>]");   }   }   private String listOnlineUsers()   {   String s ="-+- Online list -+-1512";   for (int i = 0; i < User_List.size(); i++)   {   s += "[" + User_List.get(i) + "]1512";   }   s += "-+---------------------+-";   return s;   }   private void pushMessage(String msg)   {   Message_Array.addLast(msg);   isClear = false;   }   }   }

感謝各位的閱讀,以上就是“Java Socket線程的設(shè)計原理是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java Socket線程的設(shè)計原理是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

新聞名稱:JavaSocket線程的設(shè)計原理是什么
URL地址:http://bm7419.com/article28/gigjjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、網(wǎng)站營銷、全網(wǎng)營銷推廣響應(yīng)式網(wǎng)站、定制網(wǎng)站、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)