牙牙窝

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 大牙 阅读(173) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: