Springboot前后端通过TCP通信学习总结

目录

(一)TCP:

(二)Socket:

(三)BIO: 

(四)NIO:

(五)Netty:

(六)WebSocket:

(七)总结:


为什么要做这个就不多说了,前因请去看这篇文章的(1)2024-3-26的③

Java软件开发实习见闻icon-default.png?t=N7T8https://blog.csdn.net/m0_70779503/article/details/137043065?spm=1001.2014.3001.5502

(一)TCP:

     既然要做TCP,那么肯定要知道TCP是什么,计算机网络这门课在我脑子里已经没剩多少了,也就记得七层啊,四层啊,TCP的三次握手啊,DCP不安全什么一些东西了(#捂脸)。如果有跟我相同情况的人,请看以下文章:

计算机网络回顾icon-default.png?t=N7T8https://blog.csdn.net/sunyctf/article/details/128975665?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-128975665-blog-118386484.235^v43^pc_blog_bottom_relevance_base3&spm=1001.2101.3001.4242.1&utm_relevant_index=3   我觉得这个免费的文章不错,学过但忘了的人看了之后可以很好的帮你回忆。如果你是那种计网知识都记忆的很好或者刚学完的,那就跳过不用看了

(二)Socket:

    socket是java原生的网络编程接口,具体内容看一下几个文章:

什么是Socketicon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/260139078

Socket TCP UDP 联系​​​​​​icon-default.png?t=N7T8https://blog.csdn.net/shulianghan/article/details/100125198?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171143682116800182799869%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171143682116800182799869&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-100125198-null-null.142^v99^pc_search_result_base7&utm_term=%E3%80%90Java%20%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E3%80%91Socket%20TCP%20UDP%20%E8%81%94%E7%B3%BB&spm=1018.2226.3001.4187基于TCP协议的Socket通信icon-default.png?t=N7T8https://www.runoob.com/w3cnote/android-tutorial-socket1.html 

    这个看完了之后应该就对Socket有了一些了解,接下来粘贴一些C知道AI生成的内容,关于Socket和Netty的对比

Socket和Netty是两种网络编程框架,它们在实现网络通信方面有一些区别。

1. Socket是Java提供的原生网络编程接口,它基于传统的阻塞式I/O模型。使用Socket编程时,需要手动处理连接、读写数据、关闭连接等操作。这种方式比较底层,需要开发者自己处理各种网络细节。

2. Netty是一个基于NIO的高性能网络编程框架,它封装了底层的网络细节,提供了更高级的抽象和功能。Netty使用事件驱动模型,通过回调机制处理网络事件,可以实现非阻塞式的异步通信。相比于Socket,Netty具有更好的性能和可扩展性。

具体区别如下:
  - 编程模型:Socket是基于阻塞式I/O模型,而Netty是基于非阻塞式I/O模型。
  - 性能:Netty采用了事件驱动和异步处理机制,可以处理大量并发连接,具有更好的性能表现。
  - 可扩展性:Netty提供了丰富的组件和扩展点,可以方便地进行定制和扩展。
  - 协议支持:Netty支持多种协议,如HTTP、WebSocket等,而Socket需要自己实现协议解析和处理。

    如果上面内容是对的话,那么就可以简单的理解为Mybatis和原生JDBC的关系。

(三)BIO: 

    在了解什么是Netty之前,应该先要明白什么是BIO,BIO(blocking I/O) 中文名同步阻塞,他是一种I/O模型,并且是最传统的一种I/O模型。具体的内容可以查看这篇文章:

详细JAVA-BIO介绍与优缺点icon-default.png?t=N7T8https://blog.csdn.net/weixin_44642403/article/details/108190798#:~:text=BIO%E7%BC%96%E7%A8%8B%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%B5%81%E7%A8%8B%201%20%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%90%AF%E5%8A%A8%E4%B8%80%E4%B8%AAServersocket%202,%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%90%AF%E5%8A%A8Socket%E5%AF%B9%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E8%A1%8C%E9%80%9A%E4%BF%A1%EF%BC%8C%E9%BB%98%E8%AE%A4%E6%83%85%E5%86%B5%E4%B8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E9%9C%80%E8%A6%81%E5%AF%B9%E6%AF%8F%E4%B8%80%E4%B8%AA%E8%BF%9E%E6%8E%A5%E7%9A%84%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%8C%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%BA%BF%E7%A8%8B%E4%B8%8E%E5%85%B6%E9%80%9A%E8%AE%AF%203%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%91%E5%87%BA%E8%BF%9E%E6%8E%A5%E8%AF%B7%E6%B1%82%E5%90%8E%EF%BC%8C%E5%85%88%E5%92%A8%E8%AF%A2%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%98%AF%E5%90%A6%E6%9C%89%E7%BA%BF%E7%A8%8B%E5%93%8D%E5%BA%94%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%B2%A1%E6%9C%89%E5%88%99%E7%AD%89%E5%BE%85%EF%BC%8C%E6%88%96%E8%80%85%E6%8B%92%E7%BB%9D%E8%AF%B7%E6%B1%82%204%20%E5%A6%82%E6%9E%9C%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%9C%89%E5%93%8D%E5%BA%94%EF%BC%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BA%BF%E7%A8%8B%E4%BC%9A%E7%AD%89%E5%BE%85%E8%AF%B7%E6%B1%82%E7%BB%93%E6%9D%9F%E5%90%8E%EF%BC%8C%E5%9C%A8%E7%BB%A7%E7%BB%AD%E6%89%A7%E8%A1%8C

一文彻底解释清楚Java 中的NIO、BIO和AIOicon-default.png?t=N7T8https://javabetter.cn/nio/BIONIOAIO.html#java-io-%E4%B8%8E-bio%E3%80%81nio   第一篇文章有一些图很形象然后内容的话也很好一定要看,然后下面的算是一个总述可以更好的了解全局(他还有很多别的东西,我没看,如果有需要和时间请自行查看,如果好的话请在评论区告诉我,我加进文章),可以去看,一定要先搞懂Socket再看BIO。

(四)NIO:

   如果你看了上面的BIO文章,你就应该明白BIO在处理高并发等问题上的瓶颈,所以在java1.4为了解决这个问题,引入了NIO模型,我的理解就是他基于BIO(是否基于我也不清楚对不对)引入了一些新的概念和组件诞生的。更好的了解什么是NIO请看一下的文章:

Java 中 NIO 看这一篇就够了icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/369062109Java NIO (图解+秒懂+史上最全)icon-default.png?t=N7T8https://blog.csdn.net/crazymakercircle/article/details/120946903   第一篇的图片看着不错,可以先看看第一篇,再看第二篇(是真的长,看了一点就看不下去了#捂脸)

(五)Netty:

    什么是Netty,我的理解就是你为什么要用原生JDBC而不用Mybatis(如果你用过,那是真的又臭又长,我做的swing项目里那些try看着是真的难受,不要问我为什么做swing,问就是我是S__B)所以Netty其实就是一个简化了使用的框架,你只需要传进去东西,其余的Netty就帮你实现了。具体的文章请看下面:

超详细Netty入门,看这篇就够了!icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/181239748史上最通俗Netty入门长文:基本介绍、环境搭建、动手实战icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/299396057  以上两篇文章都比较简单,更加深入的内容请自行查找浏览学习。

(六)WebSocket:

   我没有想到的是websocket竟然是一种协议,他不是框架。websocket和html反而有很深的关系。具体的内容请看下面:

全面理解WebSocket与Socket、TCP、HTTP的关系及区别icon-default.png?t=N7T8https://blog.csdn.net/aiwokache/article/details/117294920springboot整合webSocket(看完即入门)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/613527997   

(七)总结:

    根据需求,我明白了我要用WebSocket来完成功能,因为我要用在网页上实现一种类似聊天频道的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值