nc 未显示 int 套接字响应

int socket response is not shown by nc

我正在 运行使用 Netty 在端口 8080 建立一个简单的 tcp 服务器,当建立连接时,它会以 hello 响应。

class MyHandler : ChannelInboundHandlerAdapter() {

    override fun channelActive(ctx: ChannelHandlerContext) {
        val time = ctx.alloc().buffer(4)
        time.writeBytes("hello".toByteArray())
        val future = ctx.writeAndFlush(time)
        future.addListener(ChannelFutureListener.CLOSE)
    }

}

如果我 运行 nc localhost 8080,我会得到 hello 响应。一切都好。但是当我更改我的代码以改为使用 1234 (整数)进行响应时,我从 nc.

得到了一个空响应
class MyHandler : ChannelInboundHandlerAdapter() {

    override fun channelActive(ctx: ChannelHandlerContext) {
        val time = ctx.alloc().buffer(4)
        time.writeInt(1234) // <-- this is the change
        val future = ctx.writeAndFlush(time)
        future.addListener(ChannelFutureListener.CLOSE)
    }

}

nc 程序不知道您正在发送一个整数。所以当它收到它时,它不知道什么是合适的显示方式。

如果您希望看到字面上的“1234”,那么您就是在期待魔法。 nc 怎么知道它收到的数据是一个编码的整数?如果你要实现一个通过 TCP 发送数据的协议,你必须在两个端实现它,否则你会在不理解协议的端得到垃圾。