牙牙窩

          BlogJava 聯系 聚合 管理
            8 Posts :: 21 Stories :: 10 Comments :: 0 Trackbacks

          在開發Socket平臺才發現我對網絡編程是這么的無知。下面會記錄一下在開發過程中碰到的一些問題。以及解決方案。

          問題1:字符問題

                   在socket的傳送都是用字符進行傳輸,C在字符這方面不會存在太大問題,但Java就不同了,因為在Java中,存在String中的char通常都是以雙字節儲存。當將Java的String轉化為byte[]時就有問題了,之前一個字符轉后會在前面多了一個空格。由于使用的是NIO的channel通訊。而不是常用的Stream,而且如果全部轉化為byte進行處理,在Java開發又會很不方便。所以這個問題想了很多辦法都解決不了。

          解決辦法:終于在一個開源框架(jniosocket2)中我找到了解決辦法。下面是發送的代碼:

              
          public static void write(SocketChannel _channel, byte[] content)
                      
          throws IOException {

                  List
          <ByteBuffer> list = new ArrayList<ByteBuffer>();

                  list.add(ByteBuffer.wrap(content));

                  ByteBuffer[] b 
          = new ByteBuffer[1];

                  list.toArray(b);

                  _channel.write(b, 
          0, b.length);

              }


          這個方法就能夠正確把由于String轉化多出來的空格給去掉。


          posted on 2007-05-11 17:09 大牙 閱讀(182) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 边坝县| 永州市| 鹤壁市| 扎鲁特旗| 松原市| 宁都县| 麻江县| 独山县| 安岳县| 苗栗县| 高邑县| 沽源县| 广水市| 玉门市| 苍梧县| 临夏市| 绿春县| 民丰县| 韩城市| 澄江县| 鹤壁市| 通州市| 佛坪县| 南召县| 锡林郭勒盟| 深水埗区| 定西市| 桑植县| 阳泉市| 炎陵县| 全椒县| 屏东市| 苏尼特左旗| 庆安县| 马龙县| 边坝县| 交口县| 讷河市| 桐城市| 钟祥市| 临武县|