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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM