如何从字节缓冲区打印字符串

问题描述 投票:0回答:2

我刚刚开始使用java nio软件包,有点不知所措我有一个客户

Socket s=new Socket(ip,port);
OutputStream out=new OutputStream();
PrintStream ps=new PrintStream(s.getOutputStream());
String t=""hiya";
ps.print(t);
ps.flush();
InputSTreamReader in=new InputSTreamReader(s.getInputSTream);
BufferReader b=nwe BufferedReader(in);
System.out.println(b.readLine());//prints echo response from server

并且在服务器端

this.selkey = selkey;
this.chan = (SocketChannel) chan.configureBlocking(false); // asynchronous/non-blocking
buf = ByteBuffer.allocateDirect(64); // 64 byte capacity

void read() {   
    try {
        int amount_read = -1;
        try { 
           amount_read = chan.read((ByteBuffer) buf.clear());                    
        } catch (Throwable t) { 
            }
        if (amount_read == -1)
            disconnect();//deelts client on exit
        if (amount_read < 1)
            return; // if zero
            System.out.println("sending back " + buf.position() + " bytes");
            // turn this bus right around and send it back!
            buf.flip();
            chan.write(buf);//sending data 2 client
    } catch (Throwable t) {
            disconnect();
            t.printStackTrace();
    }
}

这是什么,我将字符串t发送到服务器到字节缓冲区中,并将其回显,所以一切正常,但是我会在服务器端例如通过读取方法将字符串打印出来吗?>

buf.flip()
System.out.write(buff);//which just prints what looks to be chinese
    

我刚刚开始使用java nio软件包,有点不知所措,我有一个客户端Socket s = new Socket(ip,port); OutputStream out = new OutputStream(); PrintStream ps = new PrintStream(s ....

java server byte buffer nio
2个回答
1
投票

k这是一个典型的问题,已经解决了一个小时,但是当我发布问题时,答案对我来说还是很重要的将其投射到一个字符!


0
投票

由于您正在以byte的形式发送数据,因此它将不以String的形式工作。即使您这样做,也将引用字节数组。试试这个:

© www.soinside.com 2019 - 2024. All rights reserved.