`
happy90
  • 浏览: 62130 次
  • 性别: Icon_minigender_1
  • 来自: 中国
社区版块
存档分类
最新评论

TCP、UDP、HTTP、NIO

阅读更多

这这里不是写用TCP、UDP、HTTP、NIO 怎么编程,网上有一大堆的代码。。。


之前的一个项目是用HTTP协议来实现IM项目,用到了servlet3.0,由于http协议是无状态的,所以基于http协议的聊天开发感觉有很大的不便,可是又没什么好的、快的方法,就只好用http协议+servelt来开发了。


这两天看了下新浪微博的SDK,然后看了下TCP和UDP,这些底层的知识要补一补了。


先讲TCP吧,TCP的三次握手大家都知道吧?SYN、ACK神马的。。。 C和S握好手以后,利用JDK里面的socket,可以得到inputStream和outputStream,然后就发送和接受消息吧。


UDP和TCP不一样,它把数据打包成数据包,并将接收方的ip和端口后附在数据包上,发送,就不管了。


HTTP是基于TCP上面的,所以也要先三次握手,握好手后,在HTTP层:C向S发送消息,S接受返回,此次会话结束,当然这个会话过程是有TCP在支持的。不过我不知道一次会话结束以后C和S之间的TCP连接通道是否还在? 我觉得可以在,也可以不在,也可以超时关闭等各种自定义操作吧。


另外,从客户端考虑,JDK自带HttpURLConnection的父类URLConnection中可以获得inputStream和outputStream;从服务端有req.getInputStream()和resp.getOutputStream(),是不是和TCP的那个一来一回模式很像啊?客户端在outputStream里面写数据,flush后,还要调用httpConn.getInputStream();这个方法,这样数据才是真正发到了服务器,那么底层到底是哪个方法将数据发送给服务器的?


说起NIO不得不提到阻塞和非阻塞了。我简单的理解是:阻塞是线程要等待某个资源,如果等不到某个资源,那CPU就会切换别的线程,这样切换来切换去,浪费资源。而非阻塞是让需要等待资源的那些线程休眠,资源来的时候,有线程去唤醒对应工作线程起来工作了。本来很多人等,现在只要一个人等了,就这么简单。

参考这个帖子: http://www.iteye.com/topic/834447





结束语:以上是我做项目中,平时遇到的以及思考后总结出来的,本人刚从事软件工作,在上层有很多问题想不通,需要好好研究下层啊,打好基础真的很重要,最后希望并期待和大家的交流!

0
2
分享到:
评论

相关推荐

    TCP UDP聊天室 案例

    在IT领域,网络通信是至关重要的部分,而TCP(传输控制协议)和UDP(用户数据报协议)则是两种最基础的传输层协议。本案例"TCP UDP聊天室"旨在通过Java编程语言,让我们深入理解这两种协议的工作原理及其应用场景。 ...

    Socket的TCP、UDP通讯

    在标题和描述中提到的“Socket的TCP、UDP通讯”涵盖了两种主要的传输层协议:TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。 **TCP(传输控制协议)**是一种面向连接的、可靠的、基于字节...

    java用netty写udp与tcp.pdf

    Java 用 Netty 写 UDP 与 TCP Netty 是由 JBOSS 提供的一个 Java 开源框架,提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 是一个基于 NIO 的客户...

    TCP_UDP.rar_TCP_UDP_TCP异步_socket 异步_udp socket_异步 socket

    在IT领域,网络通信是至关重要的部分,而TCP(传输控制协议)和UDP(用户数据报协议)则是两种最常用的网络传输层协议。本压缩包文件"TCP_UDP.rar"聚焦于TCP与UDP的异步Socket编程,这在构建高性能、高并发的网络...

    java_Netty权威指南,详解nio,tcp,http,netty

    Netty提供了一套完整的API和工具,使得开发者能够方便地处理各种网络协议,如TCP、UDP、HTTP、WebSocket等。其核心组件包括: 1. 事件驱动:Netty基于观察者模式,使用事件处理器链(EventLoop)处理网络事件。 2. ...

    java实现的 基本 网络通信程序 TCP 和UDP

    本篇文章将深入探讨Java实现的基本网络通信程序,包括TCP(传输控制协议)和UDP(用户数据报协议)。 TCP是一种面向连接的、可靠的传输协议,它确保了数据包的有序、无损传输。在Java中,我们主要通过`java.net....

    基于同一个局域网TCP和UDP数据传输

    本项目"基于同一个局域网TCP和UDP数据传输"是用Java编程语言实现的,旨在探讨如何在相同局域网环境下通过TCP(传输控制协议)和UDP(用户数据报协议)进行数据的发送与接收。 TCP是一种面向连接的、可靠的传输协议...

    基于TCP和UDP的SOCKT编程源代码

    在Java中,`java.net.Socket`类代表TCP连接,而`java.nio.channels.DatagramSocket`类则用于UDP通信。TCP Socket编程通常包括创建ServerSocket来监听特定端口,等待客户端连接,然后建立Socket实例进行数据交换。...

    使用netty4.X实现的手机游戏分布式服务器,支持tcp,udp,http,w-NettyGameServer.zip

    Netty是一款高性能、异步事件驱动的网络应用程序框架,常用于开发高效的网络应用,如TCP、UDP和HTTP协议的服务器。在手机游戏领域,Netty因其高效、稳定和灵活性而备受青睐。本文将深入探讨如何利用Netty4.X构建一个...

    java网络编程使用tcp、udp实现多用户对话

    在TCP模式下,服务器端可能需要为每个客户端维护一个单独的线程或使用NIO(非阻塞I/O)进行管理。而在UDP模式下,服务器可以通过广播或组播将消息发送给所有客户端,或者为每个客户端维护一个独立的数据通道。 在...

    java 基础知识之网络通信(TCP通信、UDP通信、多播以及NIO)总结

    Java 基础知识之网络通信(TCP 通信、UDP 通信、多播以及 NIO) Java 基础知识之网络通信是 Java 语言中不可或缺的一部分,包括 TCP 通信、UDP 通信、多播以及 NIO 等多种形式。下面将对这些知识点进行详细的解释。...

    NIO 入门.chm,NIO 入门.chm

    6. **网络I/O**:NIO为TCP和UDP提供了SocketChannel和DatagramChannel,用于处理网络连接。SocketChannel用于TCP连接,而DatagramChannel则用于UDP的无连接通信。 7. **通道与缓冲区的交互**:数据总是通过通道读入...

    Java NIO英文高清原版

    5. **网络通道(Network Channels)**:如SocketChannel和ServerSocketChannel,它们用于处理TCP和UDP网络通信。SocketChannel用于客户端连接,ServerSocketChannel用于监听并接受新的连接请求。 6. **多路复用器...

    NIO入门pdf分享

    6. **网络通信**:NIO为网络通信提供了SocketChannel和ServerSocketChannel,它们可以实现TCP和UDP的非阻塞连接。 7. **scatter/gather传输**:NIO支持scatter/gather传输,即数据可以从多个缓冲区写入通道,也可以...

    java NIO技巧及原理

    1. **Netty**:是一个高性能、异步事件驱动的网络应用框架,常用于创建服务器和客户端的TCP、UDP通信。 2. **Grizzly**:是Sun Microsystems(现Oracle)开发的一个开源NIO框架,支持HTTP、WebSocket等多种协议。 *...

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    Mina支持多种协议,如TCP、UDP等,适用于开发服务器端和客户端应用。Mina的核心组件包括IoSession(会话),管理连接状态和传输数据;IoFilter(过滤器),用于数据的预处理和后处理;IoHandler(处理器),处理实际...

    Java NIO系列教程(一) Java NIO 概述

    - **DatagramChannel**:用于UDP数据报的发送和接收。 - **SocketChannel**:用于客户端TCP连接的读写操作。 - **ServerSocketChannel**:用于监听并接受客户端的TCP连接请求。 - **Buffers**:Buffers是NIO中的...

    javaNIO很好的资料

    ### Java NIO 相关知识点详解 #### Java NIO 概述 Java NIO(New IO)是从 Java 1.4 版本开始引入的一种新的 I/O 处理方式,它提供了一种不同于传统 Java IO 的操作模式。NIO 的核心组件包括 Channel(通道)、...

    java nio 尚硅谷 12讲 new

    - SocketChannel和ServerSocketChannel分别用于处理TCP连接和监听。DatagramChannel则用于UDP协议的无连接通信。 7. **多路复用(Multiplexing)** - 通过选择器,一个线程可以同时处理多个通道的事件,实现高效...

    封闭式Java Socket代码

    封闭式Java Socket代码,提供TCP UDP 阻塞和非阻塞的方法,无需知道具体实现方式,只需要Main.java(Server)Main2.java(Client)Main(UDP)三个例程,简单建立联接。SocketIO接口提供精简化的方法,一体化输入输出,...

Global site tag (gtag.js) - Google Analytics