我刚刚开始使用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 ....
k这是一个典型的问题,已经解决了一个小时,但是当我发布问题时,答案对我来说还是很重要的将其投射到一个字符!
由于您正在以byte
的形式发送数据,因此它将不以String
的形式工作。即使您这样做,也将引用字节数组。试试这个: