5
回答
netty的使用
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

原来项目一直是使用java用socket编程的
最近看到netty一些介绍,感觉不错,希望能够把之前的项目移植到netty上
原先项目client会定时发送一些byte[],server会根据client端发送的内容做一定的回复
client和server之间实现交互
在netty源包exmple下找了些例子,看的不是太明白
我实现了messageReceive方法
用ChannelBuffer可以读到socket写的程序发送的内容,接收了一个字符之后就会报错
ChannelBuffer类似是nio中的buffer
但在netty里 Channel和 ChannelFuture分别代表是什么,ChannelEvent这个是怎么使用的
有没有之前使用过netty做过项目发送byte[]实现服务端和client端交互的能给些例子参考下,先谢谢各位了!
 

举报
lineage
发帖于7年前 5回/3K+阅
共有5个答案 最后回答: 7年前

Channel就是一个通道,你可以看成是socket吧

ChannelFuture就是一个channel干完某件事之后干什么事

ChannelEvent就是这个channel所发生的事件

其实你只要知道ChannelBuffer怎用就可以了,他和以前的ByteBuffer一样的

之后组好数据就用channel.write()写出即可

--- 共有 2 条评论 ---
散关清渭ChannelFuture 算是这个channel上面的一个回调吧…… 4年前 回复
石头哥哥netty的性能 网络吞吐怎么样? 我想移植我的项目 ,底层以前是自己写的 等加入netty后 一起在测试下 5年前 回复

引用来自#2楼“JavaGG”的帖子

Channel就是一个通道,你可以看成是socket吧

ChannelFuture就是一个channel干完某件事之后干什么事

ChannelEvent就是这个channel所发生的事件

其实你只要知道ChannelBuffer怎用就可以了,他和以前的ByteBuffer一样的

之后组好数据就用channel.write()写出即可

嗯,谢谢,简单的发送和接收会了
内部的逻辑是怎么处理的呢?
比如客户端连接时发送登录,登录成功之后 ,做别的事情
我现在是在handle里面复写原来的方法,channelConnected和messageReceived,比如登录失败了还是要在messageReceived方法内部处理吗?

引用来自#3楼“lineage”的帖子

引用来自#2楼“JavaGG”的帖子

Channel就是一个通道,你可以看成是socket吧

ChannelFuture就是一个channel干完某件事之后干什么事

ChannelEvent就是这个channel所发生的事件

其实你只要知道ChannelBuffer怎用就可以了,他和以前的ByteBuffer一样的

之后组好数据就用channel.write()写出即可

嗯,谢谢,简单的发送和接收会了
内部的逻辑是怎么处理的呢?
比如客户端连接时发送登录,登录成功之后 ,做别的事情
我现在是在handle里面复写原来的方法,channelConnected和messageReceived,比如登录失败了还是要在messageReceived方法内部处理吗?

 一般会在messageReceived方法内把数据封装成一个包,放到后边的登录模块实现,之后再new 一个ChannelBuffer把返回数据放在里边,再发给用户

如果有一些数据是需要每隔一段时间发送的话,messageReceived这个方法肯定不适用了。比如心跳,或者每隔一段时间扫描文件进行发送,netty该怎么处理呢。

netty的执行流程是怎么样的呢?是一个循环等待某个方法被调用吗?

收到消息之后可以做一些处理,那主动发出一些请求这个需要自己新建方法,我看那些可以复写的方法里面好像没有符合要求的

引用来自#5楼“lineage”的帖子

如果有一些数据是需要每隔一段时间发送的话,messageReceived这个方法肯定不适用了。比如心跳,或者每隔一段时间扫描文件进行发送,netty该怎么处理呢。

netty的执行流程是怎么样的呢?是一个循环等待某个方法被调用吗?

收到消息之后可以做一些处理,那主动发出一些请求这个需要自己新建方法,我看那些可以复写的方法里面好像没有符合要求的

服务器主动发送数据么???

这个可以在启动服务器时开启一个线程,定时把所有的channle拿出来,一个一个write就是了

顶部