牙牙窝

BlogJava 联系 聚合 管理
  8 Posts :: 21 Stories :: 4 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 大牙 阅读(60) 评论(0)  编辑  收藏

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
 

推荐图书:
走出软件作坊》、《悟透JavaScript》、《Head First 设计模式
相关链接:
网站导航: