<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Atea - Hero's Grave

    面向對象,開源,框架,敏捷,云計算,NoSQL,商業智能,編程思想。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      40 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks
    年初正是JavaFX熱的的時候,于是便學習了相關基礎編程,作了個小聊天室。
    雖然NetBeans 6.0支持JavaFX集成,但Editor的完成度并不高。當時為了javafx和java class之間互相傳值可真是費了不少周折:<
       更多JavaFX Script™資料請見官網:https://openjfx.dev.java.net
       Matrix上有不少中文資料:http://www.matrix.org.cn

    主要邏輯:
    首先啟動Server監聽端口,然后啟動Client。當Client輸入聊天信息,會發送給Server,然后Server再群發到每一個Client上。


    運行效果圖:
    Server端console:

    Client端console:

    Client端前臺畫面:


    Server端的部分代碼:
    Server.java

     1 package server;                                
     2                                 
     3 import java.net.DatagramSocket;                                
     4 import java.net.InetAddress;                                
     5 import java.util.Vector;                                
     6                                 
     7 public class Server{                                
     8                                 
     9     //Server IP                                
    10     public static InetAddress iaServer;                                  
    11     //Temporary Client IP                                
    12     private  static InetAddress iaClient;                                
    13     //Clients IP                                  
    14     public static Vector<InetAddress> iaClientArr;                                
    15     //Server datagram packets                                
    16     public static DatagramSocket dsServer;                                
    17                                 
    18     //Add client IP                                
    19     public static void addClientIp(byte b[]){// }                                
    20                                     
    21     //Delete client IP                                   
    22     public static void delClientIp(InetAddress ia){// }                                
    23                                     
    24     public static void main(String args[]){                                
    25         try{                                 
    26             iaServer=InetAddress.getByName(InetAddress.getLocalHost().getHostName());                                 
    27             //server的端口設為1234                                
    28             dsServer = new DatagramSocket(1234,iaServer);                                  
    29             iaClientArr = new Vector<InetAddress>();                                
    30                                 
    31             ServerRecieve tr = new ServerRecieve();                                
    32             tr.start();                                
    33                                             
    34             System.out.println("Server started.");                                
    35         }                                
    36         catch(Exception e){                                
    37             e.printStackTrace();                                
    38             System.exit(1);                                
    39         }                                            
    40     }                                
    41 }                                                          
    ServerRecieve.java
     1 package server;                                
     2                                 
     3 import java.net.DatagramPacket;                                
     4                                 
     5 public class ServerRecieve extends Thread{                                
     6                                 
     7     //Receiving datagram packets                                
     8     private String PASSTEXT;                                
     9                                     
    10     @Override                                
    11     public void run(){                                
    12         recieve();                                
    13     }                                
    14                                 
    15     //Recieve from client                                
    16     private void recieve(){                                
    17         try{                                
    18             while(true){                                
    19                                 
    20                 byte dataRecieve[]= new byte[Short.MAX_VALUE];                                
    21                 DatagramPacket dpRecieve = new DatagramPacket(dataRecieve,dataRecieve.length,Server.iaServer,1234);                                
    22                 Server.dsServer.receive(dpRecieve);                                
    23                                                 
    24                 if(dpRecieve.getData() == null || dpRecieve.getData().equals("")){                                
    25                     Thread.sleep(300);                                
    26                     continue;                                
    27                 }                                
    28                 dataRecieve = dpRecieve.getData();                                
    29                                                 
    30                 //when client first run,post IP to server.                                
    31                 String sTem = new String(dataRecieve).trim();                                
    32                 //client第一次啟動,會發送一個握手協議,通知server加入client ip                                
    33                 if(!sTem.startsWith("up\n")){                                
    34                     this.PASSTEXT = sTem;                                 
    35                     System.out.println("Server recieved: " + this.PASSTEXT);                                
    36                     ServerSend ss = new ServerSend(this.PASSTEXT.getBytes());                                
    37                     ss.start();                                                    
    38                 }                                
    39                 else{                                
    40                     sTem = sTem.substring(3);                                
    41                     Server.addClientIp(getIPByte(sTem));                                
    42                 }                                
    43             }                                
    44         }catch(Exception e){                                
    45                 e.printStackTrace();                                
    46         }                                
    47     }                                
    48                                     
    49     //Get IP from string                                
    50     private byte[] getIPByte(String IP){//}                                
    51                                     
    52 }                                
    ServerSend.java
     1 package server;                            
     2                             
     3 import java.net.DatagramPacket;                            
     4 import java.net.InetAddress;                            
     5                             
     6                             
     7 public class ServerSend extends Thread{                            
     8                                 
     9     //Sending datagram packets                            
    10     private byte dataSend[];                            
    11                             
    12     public ServerSend(byte b[]){                            
    13         this.dataSend = b;                            
    14     }                            
    15                             
    16     @Override                            
    17     public void run(){                            
    18         send();                            
    19     }                            
    20                             
    21     //Send to clients                            
    22     private void send(){                            
    23         DatagramPacket dpSend;                            
    24         for(InetAddress ia : Server.iaClientArr){                            
    25             try{                            
    26                 dpSend = new DatagramPacket(dataSend,dataSend.length,ia,5678);                            
    27                 Server.dsServer.send(dpSend);                            
    28                 System.out.println("Server sent: " + new String(dataSend));                               
    29             }                            
    30             catch(Exception e){                            
    31                 Server.delClientIp(ia);                            
    32             }                            
    33         }                                    
    34     }                            
    35 }                            

    下一篇:用java.net包和JavaFX制作簡單的C/S聊天室(二):Client端的部分代碼
    posted on 2008-07-18 12:19 Atea 閱讀(1073) 評論(0)  編輯  收藏 所屬分類: Java language
    主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃| 成人免费大片免费观看网站| 日韩一级在线播放免费观看| 亚洲国色天香视频| 91麻豆国产免费观看| 亚洲狠狠久久综合一区77777| a毛片在线免费观看| 亚洲午夜福利717| 99在线免费观看| 亚洲精品国偷自产在线| 久久国产福利免费| 国产l精品国产亚洲区在线观看| 两个人日本免费完整版在线观看1| 久久久久国产亚洲AV麻豆| 一区二区三区免费高清视频| 免费一级特黄特色大片在线| 免费一级特黄特色大片| 亚洲精品视频免费| 免费看无码特级毛片| 亚洲高清无在码在线无弹窗| A在线观看免费网站大全| 亚洲国产无线乱码在线观看| 国产一精品一aⅴ一免费| eeuss影院www天堂免费| 久久国产亚洲电影天堂| 1000部拍拍拍18勿入免费凤凰福利| 亚洲av午夜精品无码专区| 国产精品国产免费无码专区不卡 | 国产男女猛烈无遮挡免费视频 | 免费jjzz在线播放国产| 一个人免费观看视频在线中文| 亚洲人成图片小说网站| 亚洲免费福利视频| 亚洲精品中文字幕无码A片老| 亚洲国产一区二区三区| 久久久久国产精品免费免费不卡| 久久精品国产亚洲av麻豆蜜芽 | 亚洲成人福利网站| 免费一级黄色毛片| 免费无码中文字幕A级毛片| 亚洲伊人久久大香线蕉AV|