java网络编程Socket和netty框架

  现在java的技术栈一般是spring+tomcat,好像不关网络编程什么事儿。确实,由于网络编程和具体的业务相对独立,所以网络被做成框架了,我们只要使用就好,但是作为要靠技术吃饭的程序员,还是有必要了解网络编程的。

  java中设计网络编程的包有java.net和java.nio。其总的类有:

  Socket是TCP客户端API,通常用于连接远程主机
  ServerSocket是TCP服务端API,通常接受源于客户端套接字的连接
  DatagramSocket是UDP端点API,用于发送和接受数据包
  MulticastSocket是DatagramSocket的子类,在处理多播组时使用

  具体怎么使用呢?无非就是服务端和客户端的通信,socket和serverSocket。拿到socket对象,就可以获得输入流和输出流,分别对应了请 求和返回的报文。注意这时,使用get,post等方法是无效的,此时还未涉及到http协议。

  写了一个简单的client和server端,然后测试了一些特性,对于Socket通信比较熟悉了。但是Socket通信的一个特点就是read方法和write方法是阻塞的,想要同时响应多个请求,只能使用多线程操作。于是就有了SocketChannel,非阻塞的socket,read,write,connect都是非阻塞的,这个时候就要考虑同步的问题了。

  EventLoop是管理Channel的,比如IO连接上了,IO断开了,都可能通过事件管理。

  Pipeline是ChannelHandler的容器,ChannelHandlerContext表示了Pipeline和Handler的关系。

 

 

参考文章:https://blog.csdn.net/zjpp2580369/article/details/82624326

参考文章:https://blog.csdn.net/qq_35456686/article/details/81380872?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

SocketChannel:https://www.cnblogs.com/mishaka/articles/11132247.html

SocketChannel:https://www.jianshu.com/p/007adba06047

posted @   懂得了才能做一些改变  阅读(1914)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
历史上的今天:
2019-03-07 pyhton中常用的基础模块
点击右上角即可分享
微信分享提示