目录

(一)TCP:

(二)Socket:

(三)BIO: 

(四)NIO:

(五)Netty:

(六)WebSocket:

(七)总结:


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

Java软件开发实习见闻

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

(一)TCP:

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

计算机网络回顾

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

^v43^pc_blog_bottom_relevance_base3&spm=1001.2101.3001.4242.1&utm_relevant_index=3   我觉得这个免费的文章不错,学过但忘了的人看了之后可以很好的帮你回忆。如果你是那种计网知识都记忆的很好或者刚学完的,那就跳过不用看了。

(二)Socket:

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

什么是Socket

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

https://zhuanlan.zhihu.com/p/260139078

Socket TCP UDP 联系

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

^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通信

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

https://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介绍与优缺点

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

一文彻底解释清楚Java 中的NIO、BIO和AIO

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

https://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 看这一篇就够了

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

https://zhuanlan.zhihu.com/p/369062109Java NIO (图解+秒懂+史上最全)

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

   第一篇的图片看着不错,可以先看看第一篇,再看第二篇(是真的长,看了一点就看不下去了#捂脸)

(五)Netty:

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

超详细Netty入门,看这篇就够了!

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

https://zhuanlan.zhihu.com/p/181239748史上最通俗Netty入门长文:基本介绍、环境搭建、动手实战

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

https://zhuanlan.zhihu.com/p/299396057  以上两篇文章都比较简单,更加深入的内容请自行查找浏览学习。

(六)WebSocket:

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

全面理解WebSocket与Socket、TCP、HTTP的关系及区别

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

https://blog.csdn.net/aiwokache/article/details/117294920springboot整合webSocket(看完即入门)

spring boot tcp 向服务端发送消息 springboot接收tcp数据_TCP

https://zhuanlan.zhihu.com/p/613527997   

(七)总结:

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