使用netty4.x 编写TCP服务器关于握手问题

使用netty4.x 编写TCP服务器关于握手问题

还是和机顶盒通讯的项目,netty编写udp的协议已经实现了完毕;

要求TCP也要来一套….我就呵呵了…写呗.

基本上流程差不多,decoder,encoder,handler几乎都可以重用的,写好后一测..吓我一大蹦

[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0x2264fc80, /192.168.1.108:50671 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0xe19dd5d6, /192.168.1.108:50672 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0x0c6528da, /192.168.1.108:50673 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0x627a3d1b, /192.168.1.108:50674 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0x38ca0152, /192.168.1.108:50675 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0xd423fe93, /192.168.1.108:50676 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0x978e3190, /192.168.1.108:50677 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0xcb219784, /192.168.1.108:50678 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0x205d58c1, /192.168.1.108:50679 => /192.168.1.120:5000]
2015-07-25 17:29:45
[INFO]-[Thread: nioEventLoopGroup-3-1]-[io.netty.util.internal.logging.Slf4JLogger.info()]: [id: 0x0bdcf37c, /0:0:0:0:0:0:0:0:5000] RECEIVED: [id: 0x3ba890f4, /192.168.1.108:50680 => /192.168.1.120:5000]
2015-07-25 17:29:45

服务器启动,客户端访问后,控制台瞬间打印出一大堆日志,又没有异常…客户端在进行批量连接,要不是自己写的还以为是攻击呢.

仔细想了想好像没有地方出纰漏,开了wireshark抓了下包,如图:

180748_PuUL_261246.jpg

server 192.168.1.120:5000

remote 192.168.1.108:50404

这是一次完整的请求,顺序依次是(3次握手->数据传输->握手关闭),关闭是服务器主动提出的的(5000->50404)发送的FIN包,非常奇怪,代码中并没有主动关闭连接的地方..

检查代码发现,decoder中解码时因为”\r\n”未处理,提取协议数据时出现异常,异常呢??..因为控制台刷的太快..直接刷过了…

180748_SMBr_261246.jpg

转载于:https://my.oschina.net/u/261246/blog/483707

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109386.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • servlet的基本原理_简述arp的工作原理

    servlet的基本原理_简述arp的工作原理Web技术成为当今主流的互联网Web应用技术之一,而Servlet是JavaWeb技术的核心基础。因而掌握Servlet的工作原理是成为一名合格的JavaWeb技术开发人员的基本要求。本文将带你认识JavaWeb技术是如何基于Servlet工作,以Tomcat为例了解Servlet容器是如何工作的?一个Web工程在Servlet容器中是如何启动的?

  • c语言中的assert函数_assert函数用法

    c语言中的assert函数_assert函数用法一、 简介assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。原型定义:#include <assert.h>void assert( int expression );assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来…

  • u盘拒绝访问怎么解决win11_u盘无权限访问

    u盘拒绝访问怎么解决win11_u盘无权限访问使用U盘启动盘安装系统时需要用到U盘,但是当我们将U盘插上电脑,结果出现拒绝访问的情形,别说是使用U盘启动盘重装系统了,连U盘基础的文件存储功能都无法使用。当U盘出现拒绝访问怎么解决呢?就此问题,下面小编分享u盘拒绝访问没有权限的原因和解决方法。U盘出现拒绝访问怎么解决1、U盘问题1)鼠标右键单击U盘盘符,在右键菜单中点击属性。2)在弹出的属性窗口中点击“工具”选项卡,再点击“开始检查”按钮,如下图所示:3)接着勾选“自动修复文件系统错误”和“扫描并尝试恢复坏扇区”并点击“开始”按钮(1)4)

  • list集合为空或为null的区别

    list集合为空或为null的区别简述判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null,这是两码事。引用举个形象的例子,我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你想装水就需要自己去买个水杯(new ArrayList();),但是我就可以直接装水(list.add(水))。你要是没有杯子直接倒水,水就流出…

  • 二叉树的应用:求解四则运算建议收藏

    一二叉树如何表示四则运算1.1 表达式转换为二叉树上图是表达式“3+2*9-16/4”转换成的二叉树,观察表达式,可以看出:(1)操作数都是叶子节点;(2)运算符都是内部节点;(

    2021年12月19日
  • Pytest(8)parametrize参数化「建议收藏」

    Pytest(8)parametrize参数化「建议收藏」前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号