问题记录列表

问题列表及解决方式

在Netty中,客户端发送消息的地方

在Connect过程中

    1、目前可以在active中,即TCP链路建立好之后进行发送。

    2、在read中,对服务端消息处理之后,进行发送

    3、单独进行发送,理解最好是通信框架与发送消息的框架隔离开。

        blocksend是作为一个客户端单独发消息的,在李林锋的上,Netty进阶之路书中有描述。

 在Connect执行之后

    在main函数中,在执行Connect之后,取到connect结果生成的future--channel---eventloop--promise


            如可以采用Tomcat或者SpringBoot 启动这个线程,然后接受用户请求。

            用户请求是否可以单独进行扩展?

            Netty类似与一个消息中间件来进行处理启动

估计Netty可以代替Tomcat接受Socket的请求,把它变为Http的协议栈。

同时,Netty应该也可以被Tomcat启动,它的地位被调整为进程之间的消息中间件的内容,如Netty本身应该可以作为消息中间件。


问题

    在TCP链接状态下,客户端如果要主动关闭,如何操作,服务端会如何影响?

    HttpServerCodec是否设置了心跳链接?否则是如何知道客户端关闭,然后收到一个异常的呢?

    TCP的4次挥手的含义?是否在KeepAlive是默认的设置?

如果在KeepAlive状态下,客户端关闭链接,正常关闭,异常关闭。服务端会做什么响应?

TCP链接的状态值有哪些?


Wireshark是开源软件,可以免费下载使用。

1秒=1000毫秒


https://blog.csdn.net/shenya1314/article/details/70187767

socket之KEEPALIVE机制与原理分析

如果是一方正常关闭,应该有四次挥手的过程

如果一方是异常关闭,那么久需要Keepalive的机制,定时检查读,写或空闲idea

https://ssh-2009-126-com.iteye.com/blog/2109589

int keepAlive = 1;   // 开启keepalive属性. 缺省值: 0(关闭)    

int keepIdle = 60;   // 如果在60秒内没有任何数据交互,则进行探测. 缺省值:7200(s)    ,2个小时

int keepInterval = 5;   // 探测时发探测包的时间间隔为5秒. 缺省值:75(s)    

int keepCount = 2;   // 探测重试的次数. 全部超时则认定连接失效..缺省值:9(次)    


在TCP如果没有设置Keepalive情况下

    如果客户端正常关闭,服务端是没有感知,测试的例子是Nettybook中的第二章bio的部分,但是感觉它的服务端没有正常释放socket,会导致服务端的socket的积压。

    如果客户端非正常关闭,服务端也没有感知,测试的例子,Nettybook中的第二章bio的部分TimeClientShutDownwithoutexpect


在一个空闲的(idle)TCP连接上,没有任何的数据流,许多TCP/IP的初学者都对此感到惊奇。也就是说,如果TCP连接两端没有任何一个进程在向对方发送数据,那么在这两个TCP模块之间没有任何的数据交换。你可能在其它的网络协议中发现有轮询(polling),但在TCP中它不存在。言外之意就是我们只要启动一个客户端进程,同服务器建立了TCP连接,不管你离开几小时,几天,几星期或是几个月,连接依旧存在。中间的路由器可能崩溃或者重启,电话线可能go down或者back up,只要连接两端的主机没有重启,连接依旧保持建立。https://www.cnblogs.com/youxin/p/4056041.html


如果服务端一直在写,但是客户端关闭。这个时候会出现

    如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。,需要debug那个最简单的程序看一下,好像也没有发送?

另外,设置keepalive的功能在哪个地方设置。这个不是keepalive功能关注的内容,因为是有一个一端还在发数据的原因导致的。

Keepalive,如果设置一端为true,另外一端为false,或者2着的时间不一样,那么情况会如何?

推断:如果server设置keepalive 5分钟,那么服务器就5分钟发消息给客户端。如果正常,服务器socket保留,否则从队列中del

        如果client设置keepalive10分钟,那么客户端就10分钟发消息给服务器,如果正常收到,那么client的socket就保留,否则在客户端从队列中del。


在BIO的状态下,第二个并发过来的如果超过线程的调度速度,那么就会进行在线程中排队。如果线程满,那么就会溢出。

那么如何保证用户接入不溢出呢?


问题:在netty的upgrade书中,第4章,是什么原因导致服务器知道 客户端的socket被关闭?


在服务端发送给已经关闭的客户端,出现异常

在服务器读取已经关闭的客户端,也出现异常,及时是读取自己的缓冲,但是这个读的动作,可能在底层与客户端进行了沟通。导致出现异常

如果服务器没有给对这个socket进行读数据,那么就不会报异常。然后Keepalive到期之后,发送给客户端,然后出现异常,然后进行关闭服务器的内容。

我在猜想:Netty 读缓冲的应该读的是自己的内容。应该不会出现异常的问题


InputStream is = socket.getInputStream();

is.read(bytes) > -1

会报异常


IdleStateHandler

      Netty书中私有协议处理的时候,是在应用层的处理的心跳


可变数组参数。用...的话,传参数时可传可不传,传的话,可以是一个个并列地传,也可以直接是一个数组。在方法里取时,filters是一个对象数组,如果调用时什么都没有传,那么filters的长度就是0。传的时候传了几个,filters的长度就是几。还有,1.5以上才支持这个功能。


Filter... filters表示可变对象数组,Filter[] filter

比如String...str,表示可变字符串数组,String[] str

https://blog.csdn.net/bigtree_3721/article/details/51296064

JAVA 中无锁的线程安全整数 AtomicInteger介绍和使用

/**

 * 来看AtomicInteger提供的接口。

 //获取当前的值


 public final int get()


 //取当前的值,并设置新的值


  public final int getAndSet(int newValue)


 //获取当前的值,并自增


  public final int getAndIncrement()


 //获取当前的值,并自减


 public final int getAndDecrement()


 //获取当前的值,并加上预期的值


 public final int getAndAdd(int delta) 

---------------------

作者:大树叶

来源:CSDN

原文:https://blog.csdn.net/bigtree_3721/article/details/51296064

版权声明:本文为博主原创文章,转载请附上博文链接!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容