`
happy90
  • 浏览: 61440 次
  • 性别: 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
分享到:
评论

相关推荐

    netty搭建TCP、UDP服务

    Java异步NIO框架Netty实现高性能高并发,通过netty搭建TCP、UDP服务,支持物联网设备上行,下行

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

    主要介绍了java 基础知识之网络通信总结的相关资料,包括TCP通信、UDP通信、多播以及NIO,需要的朋友可以参考下

    网络编程(socket、NIO、mina)---demo

    socket的tcp/udp(多播) nio的tcp/udp mina 均有服务端/客服端

    封闭式Java Socket代码

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

    《NIO与Socket编程技术指南》高洪岩.zip

    非常详细地讲解了NIO中的缓冲区、通道、选择器、编码,以及使用Socket技术实现TCP/IP和UDP编程,细化到了演示全部SocketOption的特性,这对理解基于NIO和Socket技术为基础所开发的NIO框架是非常有好处的,本书以案例...

    javasnmp源码-nio-learn:JavaNIO使用示例,NIO的使用,TCP,UDP的简单示例

    NIO java nio 简介 Java NIO(New IO)是用于Java(来自Java 1.4)的替代IO API,意味着替代标准 Java IO和Java Networking API。 Java NIO提供了与原来IO API不同的工作方式,但是作用和目的是一样的。 NIO支持面向...

    kryonet:基于Kryo的Java的TCPUDP客户端服务器库

    KryoNet是一个Java库,为使用NIO进行有效的TCP和UDP客户端/服务器网络通信提供了简洁的API。 KryoNet使用在网络上自动高效地传输对象图。 KryoNet在台式机和上均可运行。 KryoNet是任何客户端/服务器应用程序的...

    jvm、nio、netty优化使用.txt

    它极大地简化和简化了TCP和UDP套接字服务器等网络编程。 “快速简便”并不意味着最终的应用程序将遭受可维护性或性能问题的困扰。Netty经过精心设计,结合了许多协议(例如FTP,SMTP,HTTP以及各种基于二进制和...

    wheel:关于net nio os cache db rpc json web http udp tcp mq 等多个小工具的自定义实现

    net nio os cache db rpc json web http udp tcp mq JSONParse MQ Netty NIO ORM PageReplace RPC ThreadPool 自定义线程池 ToYaml 将Properties文件转成YAML格式 Cache 使用ThreadLocal自定义查询缓存 Instrument ...

    Mina Tcp实例

    Java NIO开发技术的 TCP/UDP通信协议Mina框架的实例开发,一个简单的小栗子!

    Java高手真经 编程基础卷.part1.rar

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

    Java高手真经 编程基础卷.part3.rar

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

    Java高手真经 编程基础卷.part4.rar

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

    Java高手真经 编程基础卷.part2.rar

    Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...

    java网络编程

    java网络编程包括socket tcp/udp io/nio讲解 http协议 jdbc rmi java的安全框架等知识

    MINA NIO 高性能异步并发网络通讯框架

    利用 Mina 可以高效地完成以下任务: <br>TCP/IP 和 UDP/IP 通讯 串口通讯 VM 间的管道通讯 SSL/TLS JXM 集成 IoC 容器集成( Spring 、 Pico 等) 状态机 <br>据官方评测, APR 的...

    java-game-server:Jetserver是使用Netty和Mike Rettig的Jetlang编写的基于高速nio套接字的多人Java游戏服务器,专门针对基于网络的多人游戏进行了调整,并支持TCP和UDP网络协议

    它支持UDP和TCP传输。 它使用进行高速网络传输,并使用进行玩家会话和游戏室之间的超快速机内消息传递。 该项目还使用spring进行依赖注入。 这样,它是高度可配置的,您可以用自己的实现换出服务器的任何部分。维基...

    高性能框架Netty.doc

    Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制...

    t-io是基于aio(nio2)的网络编程框架和netty属于同类

    t-io是基于aio(nio2)的网络编程框架,和netty属于同类,但t-io更注重开发一线工程师的感受,提供...基于t-io来开发IM、TCP私有协议、RPC、游戏服务器端、推送服务、实时监控、物联网、UDP、Socket将会变得空前的简单。

Global site tag (gtag.js) - Google Analytics