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

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

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

    Atea - Hero's Grave

    面向?qū)ο螅_源,框架,敏捷,云計算,NoSQL,商業(yè)智能,編程思想。

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

    主要邏輯:
    首先啟動Server監(jiān)聽端口,然后啟動Client。當(dāng)Client輸入聊天信息,會發(fā)送給Server,然后Server再群發(fā)到每一個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的端口設(shè)為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第一次啟動,會發(fā)送一個握手協(xié)議,通知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
    主站蜘蛛池模板: 国产精品久免费的黄网站| 狠狠色婷婷狠狠狠亚洲综合| 亚洲av永久无码天堂网| 亚洲日韩精品无码专区网站| 久久成人免费播放网站| 亚洲xxxx视频| 亚洲国产精彩中文乱码AV| 国产乱码免费卡1卡二卡3卡| 一级成人生活片免费看| 亚洲日本香蕉视频| 亚洲不卡无码av中文字幕| 88xx成人永久免费观看| 免费人成网上在线观看| 亚洲精品福利视频| 一本久久综合亚洲鲁鲁五月天| 久久综合国产乱子伦精品免费| 亚洲AV永久无码天堂影院| 91亚洲国产成人精品下载| 亚洲福利在线播放| 波多野结衣免费在线| 国产免费人成视频在线播放播 | 亚洲熟妇自偷自拍另欧美| 日韩亚洲变态另类中文| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 | 亚洲av午夜福利精品一区| 成人免费无码精品国产电影| 久久青草精品38国产免费| 免费国产a理论片| 亚洲制服丝袜第一页| 久久精品亚洲综合| 免费大黄网站在线观| 无码免费午夜福利片在线| 久久精品成人免费看| 免费人人潮人人爽一区二区| 亚洲综合色7777情网站777| 久久精品国产亚洲AV麻豆~| 亚洲AV永久无码精品一区二区国产 | 午夜视频免费在线观看| 女人裸身j部免费视频无遮挡| ASS亚洲熟妇毛茸茸PICS| 亚洲黄网在线观看|