close

以下轉載自神魂顛倒

[2]
ActionScript3.0 Socket編程(2)
2.向Socket服務器發送數據.
解決方法:
    對於Socket對象來說,通過是用write方法(writeByte(),writeUTFBytes( )等方法.)先向緩存區寫入數據,然後使用flush()方法發送數據.對於XMLSocket對象,使用send()方法.
討論:
    Socket和XMLSocket類向Socket服務器發送數據的方法是不相同的.讓我們首先看壹下Socket類的方法.
    當妳使用Socket對象向服務器發送數據的時候,妳首先要將數據寫入到壹個緩沖區中.Socket類設置了壹系列的方法來寫數據.每壹個方法都用於寫不 同的數據類型的數據(或者不同的數據).這些方法分別是: writeBoolean( ), writeByte( ), writeBytes( ), writeDouble( ), writeFloat( ), writeInt( ), writeMultiByte( ), writeObject( ), writeShort( ), write- UnsignedInt( ), writeUTF(), 和writeUTFBytes( ). 這些方法大多數都只接受壹個參數,該參數的類型同方法的名字相匹配.例如,writeBoolean()方法接受壹個布爾值作為參數,而 writeByte( ), writeDouble( ), writeFloat( ), writeInt( ), writeShort( ), writeUnsignedInt( ) 方法接受壹個數字型參數.writeObject()方法接受壹個對象類型作為參數,但該對象必須序列化成為AMF格式.writeBytes( )方法允許妳傳壹個ByteArray參數,並帶有偏移量和長度兩個參數.例如,下面這段代碼,調用了壹個writeBytes( )方法,該方法將ByteArray對象中的所有byt值都傳出去了(偏移量為0,長度和ByteArray數組長度等長):
復制內容到剪貼板
代碼:
socket.writeBytes(byteArray, 0, byteArray.length);
writeUTF( )和writeUTFBytes( ) 方法允許妳的發送字符串類型的參數.每個壹個方法只接受壹個字符串作為參數.writeUTFBytes( )方法簡單的將字符串作為Bytes發送.writeUTF( )方法在寫入真正數據之前,先寫入byts的數量.
    writeMultiByte( )方法也允許字符串類型的參數,但是使用的為非默認字符集.該方法需要兩個參數:字符串和字符集名稱.在Flash和Flex的幫助文檔中有壹個自持所有 字符集的列表,該列表中的標簽和描述符是壹壹對應的.使用標簽值作為writeMultiByte( )作為字符集.例如下面的代碼發送了壹個編碼為Unicode的字符串:
復制內容到剪貼板
代碼:
socket.writeMultiByte("example", "unicode");
相 壹個Socket對象傳數值的方法完全依賴於妳所有數據的類型和服務所接受數據的類型.使用壹個Socket對象,妳完全可以使用 ActionScript寫壹個Telnet和POP mail客戶端.這兩種協議都支持ASCII字符指令.例如,在連接壹個POP服務器之後,妳可以通過使用USER指令指定壹個用戶.下面代碼向壹個 Socket對象發壹條指令:
復制內容到剪貼板
代碼:
// POP servers expect a newline (\n) to execute the preceding command.
socket.writeUTFBytes("USER exampleUsername\n");
向壹個Socket對象寫入數據其實並沒有將數據發送到Socket服務器.每調用壹個write方法都向Socket對象添加壹個數據.例如,下面代碼向壹個Socket對象添加了四個byte的數據,但是沒有壹個發出了.
復制內容到剪貼板
代碼:
socket.writeByte(1);
socket.writeByte(5);
socket.writeByte(4);
socket.writeByte(8);
當妳想將這些累積的數據發送到Socket服務器需要調用flush()方法.flush()方法調用之後將把所有已經寫入的數據發送出去,並清空緩沖區:
復制內容到剪貼板
代碼:
socket.flush(  );
XMLSocket 類是壹個非常簡單用於發送數據的API.寫於發數據都是由send()這壹個方法來完成的.send()方法可以接受任何數據類型的參數.它可以將所有的 參數都轉換為壹個字符串類型並發送到服務器.通常參數為壹個XML對象或者壹個包含數據結構類似XML數據的字符串:
復制內容到剪貼板
代碼:
xmlSocket.send(xml);
然而,準確的格式完全依賴於服務器所能夠接受的格式.如果服務器接受XML格式的數據,妳必須發送XML格式的數據.如果服務器只接受URL編碼的數據,妳也必須發送URL編碼的數據.

arrow
arrow
    全站熱搜

    阿酷 發表在 痞客邦 留言(0) 人氣()