gpt4 book ai didi

java - 如何比较 vertx.buffer 和 java.io.String

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:56 26 4
gpt4 key购买 nike

我想运行该函数作为附带源以接收来自客户端的特定字符串的输入。然而,这是行不通的。

如何操作它?请帮助我!

public class Server {
private Vertx vertx = Vertx.vertx(new VertxOptions().setWorkerPoolSize(1024));
private NetServer server = vertx.createNetServer();

public void start(int port){

server.connectHandler(socket -> {
socket.handler(buffer -> {
System.out.println("I received some bytes: " + buffer.length());

if(buffer.equals(Buffer.buffer().appendString("STOP!"))){
socket.write(Buffer.buffer().appendString("The server will be shut down."));
this.stop();
}
});
});

server.listen(port, "localhost", res -> {
if (res.succeeded()) {
System.out.println("Server is now listening!");
} else {
System.out.println("Failed to bind!");
}
});
}


public void stop(){
server.close(res -> {
if (res.succeeded()) {
System.out.println("Server is now closed");
} else {
System.out.println("close failed");
}
});
}
}

最佳答案

即使您让它在这种特定情况下工作,它也不会像您想象的那样工作。

TCP 并不像您想象的那样具有“消息”的逻辑概念。它更像是一个流,vertx 可以方便地以字节为单位向您呈现 block 。

而是逐个字符进行比较,因为两个缓冲区的底层 netty ByteBuf 对象可能是较大内存块的 View ,因此导致比较失败。但如果您的客户端情况允许,请考虑使用网络套接字,因为您会更容易理解。

关于java - 如何比较 vertx.buffer 和 java.io.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34576719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com