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 发送数据的协议,你必须在两个端实现它,否则你会在不理解协议的端得到垃圾。
我正在 运行使用 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 发送数据的协议,你必须在两个端实现它,否则你会在不理解协议的端得到垃圾。