網絡編程 質數判別示例

該示例實現的功能是質數判斷,程序實現的功能為客戶端程序接收用戶輸入的數字,然後將用戶輸入的內容發送給服務器端,服務器端判斷客戶端發送的數字是否是質數,並將判斷的結果反饋給客戶端,客戶端根據服務器端的反饋顯示判斷結果。
    質數的規則是:最小的質數是2,只能被1和自身整除的自然數。當用戶輸入小於2的數字,以及輸入的內容不是自然數時,都屬於非法輸入。
    網絡程序的功能都分為客戶端程序和服務器端程序實現,下面先描述壹下每個程序分別實現的功能:
    1、  客戶端程序功能:
    a)         接收用戶控制臺輸入
    b)         判斷輸入內容是否合法
    c)         按照協議格式生成發送數據
    d)         發送數據
    e)         接收服務器端反饋
    f)          解析服務器端反饋信息,並輸出
    2、  服務器端程序功能:
    a)         接收客戶端發送數據
    b)         按照協議格式解析數據
    c)         判斷數字是否是質數
    d)         根據判斷結果,生成協議數據
    e)         將數據反饋給客戶端
    分解好了網絡程序的功能以後,就可以設計網絡協議格式了,如果該程序的功能比較簡單,所以設計出的協議格式也不復雜。
    客戶端發送協議格式:
    將用戶輸入的數字轉換為字符串,再將字符串轉換為byte數組即可。
    例如用戶輸入16,則轉換為字符串“16”,使用getBytes轉換為byte數組。
    客戶端發送“quit”字符串代表結束連接
    服務器端發送協議格式:
    反饋數據長度為1個字節。數字0代表是質數,1代表不是質數,2代表協議格式錯誤。
    例如客戶端發送數字12,則反饋1,發送13則反饋0,發送0則反饋2。
    功能設計完成以後,就可以分別進行客戶端和服務器端程序的編寫了,在編寫完成以後聯合起來進行調試即可。
    下面分別以TCP方式和UDP方式實現該程序,註意其實現上的差異。不管使用哪種方式實現,客戶端都可以多次輸入數據進行判斷。對於UDP方式來說,不需要向服務器端發送quit字符串。
    以TCP方式實現的客戶端程序代碼如下:
    package example1;
    import java.io.*;
    import java.net.*;
    /**
    * 以TCP方式實現的質數判斷客戶端程序
    */
    public class TCPPrimeClient {
    static BufferedReader br;
    static Socket socket;
    static InputStream is;
    static OutputStream os;
    /**服務器IP*/
    final static String HOST = “127.0.0.1”;
    /**服務器端端口*/
    final static int PORT = 10005;
    public static void main(String[] args) {
    init(); //初始化
    while(true){
    System.out.println(”請輸入數字:”);
    String input = readInput(); //讀取輸入
    if(isQuit(input)){ //判讀是否結束
    byte[] b = “quit”.getBytes();
    send(b);
    break; //結束程序
    }
    if(checkInput(input)){ //校驗合法
    //發送數據
    send(input.getBytes());
    //接收數據
    byte[] data = receive();
    //解析反饋數據
    parse(data);
    }else{
    System.out.println(”輸入不合法,請重新輸入!”);
    }
    }
    close();  //關閉流和連接
    }
    /**
    * 初始化
    */
    private static void init(){
    try {
    br = new BufferedReader(
    new InputStreamReader(System.in));
    socket = new Socket(HOST,PORT);
    is = socket.getInputStream();
    os = socket.getOutputStream();
    } catch (Exception e) {}
    }
    /**
    * 讀取客戶端輸入
    */
    private static String readInput(){
    try {
    return br.readLine();
    } catch (Exception e) {
    return null;
    }
    }
    /**
    * 判斷是否輸入quit
    * @param input 輸入內容
    * @return true代表結束,false代表不結束
    */
    private static boolean isQuit(String input){
    if(input == null){
    return false;
    }else{
    if(”quit”.equalsIgnoreCase(input)){
    return true;
    }else{
    return false;
    }
    }
    }
    /**
    * 校驗輸入
    * @param input 用戶輸入內容
    * @return true代表輸入符合要求,false代表不符合
    */
    private static boolean checkInput(String input){
    if(input == null){
    return false;
    }
    try{
    int n = Integer.parseInt(input);
    if(n >= 2){
    return true;
    }else{
    return false;
    }
    }catch(Exception e){
    return false;  //輸入不是整數
    }
    }
    /**
    * 向服務器端發送數據
    * @param data 數據內容
    */
    private static void send(byte[] data){
    try{
    os.write(data);
    }catch(Exception e){}
    }
    /**
    * 接收服務器端反饋
    * @return 反饋數據
    */
    private static byte[] receive(){
    byte[] b = new byte[1024];
    try {
    int n = is.read(b);
    byte[] data = new byte[n];
    //復制有效數據
    System.arraycopy(b, 0, data, 0, n);
    return data;
    } catch (Exception e){}
    return null;
    }
    /**
    * 解析協議數據
    * @param data 協議數據
    */
    private static void parse(byte[] data){
    if(data == null){
    System.out.println(”服務器端反饋數據不正確!”);
    return;
    }
    byte value = data[0]; //取第壹個byte
    //按照協議格式解析
    switch(value){
    case 0:
    System.out.println(”質數”);
    break;
    case 1:
    System.out.println(”不是質數”);
    break;
    case 2:
    System.out.println(”協議格式錯誤”);
    break;
    }
    }
    /**
    * 關閉流和連接
    */
    private static void close(){
    try{
    br.close();
    is.close();
    os.close();
    socket.close();
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }

全球LTE網絡發展前瞻報告

根據無線智能網WI(Wireless Intelligence)最新發布的《2010~2015全球LTE網絡前瞻報告》稱,在未來5年裏,LTE網絡將席卷全球移動通信網4%的市場份額。在2011年上半年,全球LTE網絡用戶將超過100萬戶,隨著全球移動網絡運營商不斷推出LTE高速無線網絡,到2015年,該數字將達3億戶。   據該前瞻報告稱,到2015年,亞太地區將成為全球最大的LTE網絡市場,占全球LTE網絡的43%。而作為全球最大的移動通信網絡市場,中國LTE網絡用戶數將占全亞太地區LTE網絡用戶的壹半。然而,由於西歐和北美移動網絡運營商對LTE網絡持續發展,在2010年,西歐和北美LTE網絡占全球LTE網絡的70%。這主要是因為諸如歐洲TeliaSonera和美國Verizon無線通信公司率先在歐洲和美國推出LTE網絡所致。對於亞太地區而言,中國、日本、印度尼西亞、韓國都將成為LTE網絡發展的先鋒。在南美洲和非洲,其LTE網絡用戶發展較緩,到2015年,其LTE網絡用戶只占全球LTE網絡用戶的5%。   無線智能網高級分析師,Joss Gillet表示:“LTE網絡的不斷推出也體現了電信行業正在雲計算和融合網絡基礎上,正以矯健的步伐給終端網絡用戶帶來全新的無線網絡體驗。該報告中也表明了,LTE網絡將風扉全球,然而,在無線網絡發展較快、頻譜已經敲定、政府政策已經形成、調控部門也積極配合網絡運營商部署LTE網絡的國家,其LTE網絡發展速度將更快。然而,壹種新新的網絡要想真正稱霸全球,也將歷經千辛萬苦,需數年才能真正在全球普及。”   該分析報告是經過調查全球LTE網絡(不包括印度)運營商對其在未來5年發展趨勢之後所分析、總結出來的結果。在2010年底,包括日本NTT Docomo、德國Deutsche電信、UAE Etisalat即將在本月底開通的LTE網絡,全球將有19張LTE網絡正式投入運營。全球首張LTE網絡是由TeliaSonera於壹年以前在瑞典首都斯德哥爾摩和挪威首都奧斯陸推出的。隨後,TeliaSonera相繼在芬蘭和丹麥也推出了LTE網絡。WI預測,在2010年底,全球LTE網絡用戶數將達35萬戶。   Gillet說:“最先使用LTE網絡的用戶是由於當前移動網絡帶寬無法滿足數據中心移動寬帶網絡用戶的需求,故其將通過USB加密狗和嵌入式網絡設備提高其網絡帶寬。據我們分析預測,LTE聲音(VoLTE)網絡將於2012年推出,這將對LTE手機的大批量出貨和LTE網絡的快速發展帶來巨型引擎。然而,就短期發展而言,高昂的LTE手機價格與有線的網絡覆蓋率依舊減緩LTE發展速度。”   據該報告分析稱,LTE網絡的發展依然與網絡調控部門頒發相關通信頻譜息息相關。對於LTE網絡部署而言,需三大主頻段:2500~2600MHz頻帶中的IMT延伸頻帶,700~800MHz頻帶中的數字分區頻帶,以及對現有低速率通信頻段的升級頻帶。

CDMA無線網絡行情分析

CDMA無線網絡是我們將要講解的內容。首先我們分析了市場的情形,之後對於CDMA無線網絡的壹些發展趨勢也進行了分析和講解。希望對大家有所幫助。

  競爭的迫切需求

  中國電信在3G元年的市場競爭中壹直面臨著網絡升級的選擇。在2009年上半年,中國電信憑借率先大面積完成升級的CDMA無線網絡的EV-DO版本A網絡在國內3G市場上取得先發優勢。到2009年下半年,隨著中國聯通“wo3G”的全面商用,中國電信網絡優勢開始受到挑戰。

  最明顯的挑戰表現在3G無線上網卡市場上,5.17中國聯通推出3G上網卡後,中國電信無線上網卡市場出現明顯下滑。壹位上網卡網絡批發商表示,由於聯通上網卡在網絡速率和穩定性上表現較好,導致天翼上網卡銷量在8月和9月出現大量下滑,最多時壹周下滑25%左右。

  北京電信無線網絡部人士告訴記者,由於上網卡用戶數量增加,現有CDMA無線網絡的CDMAEV-DO版本A網絡“在某些熱點地區出現了支持不大夠”的現象,他表示,解決這個問題,壹種方式就是是網絡增容。但他也提到,在北京地區,增加基站“不大好搞,需要慢慢來”。

  另壹種辦法是在現有基站上進行技術升級。據了解,中國電信在此之前就與高通進行了充分討論,高通力推向EV-DO版本B進行升級,並在各地舉辦了數次技術推介會,其快速升級和平滑升級的理由打動了不少地方電信的高層。

  高通壹位技術專家表示,迅速升級到EV-DO版本B將給中國電信帶來持續的網絡優勢,“在迅速升級後,起碼到2011年,中國電信不用擔心網絡帶寬的問題。”

  升級路線傾向明顯

  不過,中國電信內部有不同的聲音。中國電信研究院副總工程師楊峰義表示,“90%的WCDMA移動運營商都已經升級到了HSPA,而CDMA無線網絡發展這麽多年來其速率上並沒有實質性的突破,CDMA無線網絡的EV-DO提供了版本B的升級,但版本B還有壹些技術上的問題,雖然可以用,但並不能獲得我們期望的結果。”

  此外,他認為LTE使傳統的網絡結構上發生了大的變化,實現了全IP的扁平化結構,LTE技術優勢也得到了比較充分的體驗,因此,他傾向於直接向LTE升級,跳過版本B階段。同時他努力強調,這都是他的個人觀點,不代表任何機構。

  據了解,全球最主要的電信運營商均已轉向了LTE陣營,美國排名前兩名的運營商VerizonWireless和at&t,歐洲的Telefonica、TeliaSonera、Telenor以及中國電信、中國移動和中國聯通都明確表示支持LTE。而SKT和Verizon已經明確宣布選擇跳過版本B直接進入LTE。

  不過,面臨激烈競爭,電信最根本的問題在於,LTE何時能夠商用?從CDMA無線網絡的EV-DOA版本到LTE之間的空白期有多長?在這期間會不會因為網絡弱於對手而錯過3G用戶發展的黃金期?

  其他運營商也面臨這壹問題,日本運營商KDDI的董事長兼總裁TadashiOnodera表示,希望在2012年底能開始LTE商用,中國電信的時間表可能更加迫切。

  仍需謹慎權衡

  2009年7月至8月間,中國電信廣州研究院進行了對版本B的實驗室測試,隨後中國電信在北京、上海、廣州、成都等啟動外場測試,這些地方的版本B網絡建設計劃已經提交到集團公司。

  中國電信有可能采用混合方式實現網絡升級。在北京、上海、廣州等CDMA無線網絡3G用戶眾多的熱點城市進行小規模的B版本升級,而在全國其他範圍內對A版本基站的數量進行補充,靜待LTE的成熟商用。業內專家認為,這應該是中國電信經過多方權衡後的權益之計,壹方面避免了大量的成本投入可能迅速過時的危險,另壹方面在與對手的競爭中具備壹定程度的還手之力。

  不過,還有壹個問題需要註意,中國電信壹直受困於終端問題,王曉初著名的“汗顏論”表明,在2009年上半年,終端壹度成為電信CDMA無線網絡的瓶頸,其主要原因還在於CDMA無線網絡產業鏈的薄弱,廠商沒有足夠的勇氣對CDMA無線網絡終端大量投入。如果中國電信升級到版本B,相應的終端是否需要大量升級將給廠商帶來新困惑。作為CDMA無線網絡產業鏈的龍頭,中國電信必須對此進行全面考慮。