<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> 

     

    主站蜘蛛池模板: 亚洲国产成人精品无码久久久久久综合| **aaaaa毛片免费同男同女| 免费无码又爽又高潮视频| 亚洲精品日韩中文字幕久久久| 成人久久免费网站| 亚洲精品夜夜夜妓女网| 国内精品免费久久影院| 亚洲动漫精品无码av天堂| 免费观看91视频| 亚洲AV中文无码乱人伦下载| 日韩电影免费在线观看中文字幕| 亚洲av不卡一区二区三区| 99久久久国产精品免费牛牛四川| 日韩精品亚洲人成在线观看| 99re在线视频免费观看| 亚洲激情黄色小说| 最近免费中文字幕大全视频| 欧美色欧美亚洲另类二区| 亚洲av无码乱码在线观看野外 | 久久精品亚洲中文字幕无码麻豆| 日本黄色动图免费在线观看| 亚洲精品美女久久久久9999| 永久免费毛片在线播放| 国产成人精品亚洲| 亚洲熟妇av一区二区三区漫画 | 日本h在线精品免费观看| 亚洲伊人久久大香线蕉结合| 爽爽日本在线视频免费| 夜夜爽妓女8888视频免费观看| 美女黄频视频大全免费的| 亚洲中久无码不卡永久在线观看| 免费视频精品一区二区三区| 亚洲午夜电影一区二区三区| 婷婷亚洲天堂影院| 毛片在线播放免费观看| 亚洲高清中文字幕免费| 国产中文在线亚洲精品官网| 18女人水真多免费高清毛片| 国产精品亚洲а∨天堂2021| 亚洲国产精品成人久久| 黄网址在线永久免费观看|