国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 10:45:52
字體:
來源:轉載
供稿:網友

  作者: 郗旻
  二、建立客戶端代碼
    相比服務器端,客戶端要簡單一些,客戶端只需用服務器所在機器的  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://將數據流中的消息顯示出來
  }
    通過以上改進,程序就可以比較好的運行了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳东县| 牟定县| 柘荣县| 沧源| 马鞍山市| 改则县| 定结县| 乾安县| 屯门区| 恭城| 南城县| 南投市| 福建省| 贺州市| 兴海县| 五指山市| 两当县| 工布江达县| 黔西县| 康定县| 无棣县| 顺昌县| 南雄市| 宜川县| 新郑市| 合作市| 台北县| 盘山县| 芜湖县| 田阳县| 商洛市| 永靖县| 鲁甸县| 大荔县| 泸水县| 惠州市| 晋州市| 衡阳市| 旬邑县| 章丘市| 彭阳县|