socket服务端如何同时接收客户端发送的多个信息
本人最近在写一个socket的小例子,但是遇到了一些问题。就是在服务端接收客户端发送的数据的时候可能会出现同时发送多种数据包的操作(我这里的数据包的协议是这样的结构,“数据类型【一个字节】,数据长度【7个字节】,数据【真实传递数据的字节】”),但是我在接收的那里是在一个线程里操作。如果想要实现去就收不同的数据该怎么去做操作呢?希望大神们能指点下,很急很关键,谢谢了!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
这个你就要创建消息队列来处理了,收到数据先丢进队列然后慢慢处理
回复
我就是在那个处理数据类型的线程里,在socket接收数据的时候可能同时接收了两种数据类型,而且是用一个线程去处理不同的数据类型,一旦同时遇到了多个数据类型,好像就会出现问题了,这种时候我就不知道该怎么搞了。。。。
回复
简单了,解析接收到的数据然后根据你的既定的格式判断啊时那种,然后做个路由分支处理就好了。讨论这么长时间发现你的问题竟然是酱紫的,擦汗!
回复
什么叫做路由分支啊?能详细的说一说吗?我只是做了一个简单的ifelse判断。。。。。我可以给你看一下代码。。。。
回复
对,要是简单些就是个ifelse,怎么看代码
回复
我加你扣扣吧。。。可以吗,大神?
你要是自己写不用框架的话,先是在accept()以后创建新的线程,然后把inputstream和outputstream对象都传入线程里面去,针对这个连接的读写就由这个线程来负责处理,你可以设置结束标志然后停止线程,释放资源。当然也可以实现线程池,然后前端加上调度,重复有效利用线程资源,避免线程创建和销毁时的开销.....
那如果要是想写成像netty和mina那样的话,还是研究一下它们的原理吧
如果我用MINA框架的话,是不是需要在客户端和服务端都用上这个框架呢?
没连接成功的时候创建一个线程去处理喽,最近弄个IM 用的MINA 这个框架,封装的挺好的。