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

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

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

    The NoteBook of EricKong

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

    Flex中XMLSocket與Java中Socket通信,遇到的問題是,Java中的socket能夠接受到XMLSocket傳輸的數據,但是Flex并不能接受到從Java服務器傳輸的數據,從網上搜了好多資料,終于找到了原因,原來XMLSocket 接收到服務端下發的數據時,將連續放于接收緩沖區,直到接收到 "\0" 字節(字節內容為 ASCII 值 0),才認為接收完成,并調用相應的 onData 或 onXML 事件,因此,服務端若用 Java 編寫,并使用標準的 String 類族,則在發送數據結尾應手動加上 "\0",同樣,當XMLSocket發送數據時,也會在數據的結尾自動加上"\0"。

    我現在將我做的一個簡單的XMLSocket通信的例子貼出來跟大家共享一下,如果有什么不足的地方,還望大家批評指出,畢竟我也是flex初學者,呵呵!

    Java應用程序代碼:
     view plaincopy to clipboardprint?
    public class XMLServerSocket {  
     
     
        private ServerSocket serverSocket;  
     
        private Socket socketin;  
     
        private BufferedReader br;  
     
        private PrintStream ps;  
     
        public static void main(String[] args) {  
            new XMLServerSocket();  
        }  
     
        private XMLServerSocket() {  
            try {  
                serverSocket = new ServerSocket(8800);  
                socketin = serverSocket.accept();  
                br = new BufferedReader(new InputStreamReader(socketin  
                        .getInputStream()));  
                ps = new PrintStream(socketin.getOutputStream());  
                ps.println("Input EXIT for end\0");  
                ps.flush();  
                out("Input EXIT for end");  
                boolean done = false;  
                while (!done) {  
                    String str = br.readLine();  
                    if (str == null || (str.length() == 1 && str.charAt(0) == '\0')) {  
                        done = true;  
                    } else {  
                        char first = str.charAt(0);  
                        char tail = str.charAt(str.length() - 1);  
                        if (first == '\0') {  
                            str = str.substring(1);  
                        }  
                        if (tail == '\0') {  
                            str = str.substring(0, str.length() - 2);  
                        }  
                        out(str);  
                        ps.println(str + "\0");  
                        if (str.trim().equals("EXIT")) {  
                            done = true;  
                            br.close();  
                        }  
                    }  
                }  
            } catch (Exception e) {  
                System.out.println(e.getMessage());  
            }  
        }  
     
        private void out(String str) {  
            System.out.println(str);  
        }  
     

    public class XMLServerSocket {


     private ServerSocket serverSocket;

     private Socket socketin;

     private BufferedReader br;

     private PrintStream ps;

     public static void main(String[] args) {
      new XMLServerSocket();
     }

     private XMLServerSocket() {
      try {
       serverSocket = new ServerSocket(8800);
       socketin = serverSocket.accept();
       br = new BufferedReader(new InputStreamReader(socketin
         .getInputStream()));
       ps = new PrintStream(socketin.getOutputStream());
       ps.println("Input EXIT for end\0");
       ps.flush();
       out("Input EXIT for end");
       boolean done = false;
       while (!done) {
        String str = br.readLine();
        if (str == null || (str.length() == 1 && str.charAt(0) == '\0')) {
         done = true;
        } else {
         char first = str.charAt(0);
         char tail = str.charAt(str.length() - 1);
         if (first == '\0') {
          str = str.substring(1);
         }
         if (tail == '\0') {
          str = str.substring(0, str.length() - 2);
         }
         out(str);
         ps.println(str + "\0");
         if (str.trim().equals("EXIT")) {
          done = true;
          br.close();
         }
        }
       }
      } catch (Exception e) {
       System.out.println(e.getMessage());
      }
     }

     private void out(String str) {
      System.out.println(str);
     }

    }

    Flex程序代碼:

    view plaincopy to clipboardprint?
    <?xml version="1.0" encoding="utf-8"?> 
    <mx:Application xmlns:mx="    <mx:Script> 
            <!--[CDATA[  
                private var xmlconnect:XMLSocket;  
                private function connectServer():void  
                {  
                    try{  
                        xmlconnect = new XMLSocket();  
                        xmlconnect.connect("localhost",8800);  
                        xmlconnect.addEventListener(DataEvent.DATA,onData);  
                    }  
                    catch(e:Error)  
                    {  
                        trace(e.message);  
                    }  
                }  
                private function onData(event:DataEvent):void  
                {  
                    content.text = event.text;  
                }  
                private function sendData():void  
                {  
                    xmlconnect.send(datasend.text + "\n");//必須加上"\n",否則數據不能成功發送  
                }  
            ]]--> 
        </mx:Script> 
        <mx:Text id="content" width="271" height="116" horizontalCenter="0" verticalCenter="0" /> 
        <mx:TextInput id="datasend" horizontalCenter="0" verticalCenter="95"/> 
        <mx:Button label="發送" horizontalCenter="0" verticalCenter="121" click="sendData()"/> 
        <mx:Button label="連接" horizontalCenter="0" verticalCenter="-103" click="connectServer()"/> 
    </mx:Application> 

     

    主站蜘蛛池模板: 老外毛片免费视频播放| 国产精品视频白浆免费视频| 在线亚洲97se亚洲综合在线| 久久久久久久久久国产精品免费 | 亚洲国产成人VA在线观看| 国产免费MV大全视频网站| 亚洲日本香蕉视频| 四虎精品亚洲一区二区三区| 国产精品99久久免费观看| 亚洲AV无码精品国产成人| 亚洲人成色7777在线观看| 美女视频黄的全免费视频| 狠狠躁狠狠爱免费视频无码| 亚洲午夜久久久久久尤物| 久久久久久A亚洲欧洲AV冫| 黄瓜视频影院在线观看免费| 国产精品视频全国免费观看| 久久久久亚洲国产| 久久精品国产亚洲AV麻豆~ | 久久精品国产99国产精品亚洲| 亚洲av午夜精品一区二区三区| 99久久久国产精品免费无卡顿 | 人妻丰满熟妇无码区免费| 国产亚洲人成在线播放| 亚洲精品第五页中文字幕| 亚洲最大av无码网址| 四虎国产精品免费久久| 日韩人妻一区二区三区免费 | 好爽好紧好大的免费视频国产| 日韩精品无码免费一区二区三区| 免费人妻精品一区二区三区| 亚洲人xxx日本人18| 亚洲一区二区三区四区在线观看| 亚洲另类少妇17p| 日韩免费视频一区| 五月婷婷在线免费观看| 男人都懂www深夜免费网站| 一个人看的www在线免费视频| 亚洲av午夜国产精品无码中文字 | 亚洲导航深夜福利| 亚洲成人午夜在线|