这这里不是写用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
结束语:以上是我做项目中,平时遇到的以及思考后总结出来的,本人刚从事软件工作,在上层有很多问题想不通,需要好好研究下层啊,打好基础真的很重要,最后希望并期待和大家的交流!
分享到:
相关推荐
Java异步NIO框架Netty实现高性能高并发,通过netty搭建TCP、UDP服务,支持物联网设备上行,下行
主要介绍了java 基础知识之网络通信总结的相关资料,包括TCP通信、UDP通信、多播以及NIO,需要的朋友可以参考下
socket的tcp/udp(多播) nio的tcp/udp mina 均有服务端/客服端
封闭式Java Socket代码,提供TCP UDP 阻塞和非阻塞的方法,无需知道具体实现方式,只需要Main.java(Server)Main2.java(Client)Main(UDP)三个例程,简单建立联接。SocketIO接口提供精简化的方法,一体化输入输出,...
非常详细地讲解了NIO中的缓冲区、通道、选择器、编码,以及使用Socket技术实现TCP/IP和UDP编程,细化到了演示全部SocketOption的特性,这对理解基于NIO和Socket技术为基础所开发的NIO框架是非常有好处的,本书以案例...
NIO java nio 简介 Java NIO(New IO)是用于Java(来自Java 1.4)的替代IO API,意味着替代标准 Java IO和Java Networking API。 Java NIO提供了与原来IO API不同的工作方式,但是作用和目的是一样的。 NIO支持面向...
KryoNet是一个Java库,为使用NIO进行有效的TCP和UDP客户端/服务器网络通信提供了简洁的API。 KryoNet使用在网络上自动高效地传输对象图。 KryoNet在台式机和上均可运行。 KryoNet是任何客户端/服务器应用程序的...
它极大地简化和简化了TCP和UDP套接字服务器等网络编程。 “快速简便”并不意味着最终的应用程序将遭受可维护性或性能问题的困扰。Netty经过精心设计,结合了许多协议(例如FTP,SMTP,HTTP以及各种基于二进制和...
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 ...
Java NIO开发技术的 TCP/UDP通信协议Mina框架的实例开发,一个简单的小栗子!
Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...
Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...
Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...
Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级特性:反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。随书附赠光盘内容为《Java高手真经(编程基础卷...
java网络编程包括socket tcp/udp io/nio讲解 http协议 jdbc rmi java的安全框架等知识
利用 Mina 可以高效地完成以下任务: <br>TCP/IP 和 UDP/IP 通讯 串口通讯 VM 间的管道通讯 SSL/TLS JXM 集成 IoC 容器集成( Spring 、 Pico 等) 状态机 <br>据官方评测, APR 的...
它支持UDP和TCP传输。 它使用进行高速网络传输,并使用进行玩家会话和游戏室之间的超快速机内消息传递。 该项目还使用spring进行依赖注入。 这样,它是高度可配置的,您可以用自己的实现换出服务器的任何部分。维基...
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制...
t-io是基于aio(nio2)的网络编程框架,和netty属于同类,但t-io更注重开发一线工程师的感受,提供...基于t-io来开发IM、TCP私有协议、RPC、游戏服务器端、推送服务、实时监控、物联网、UDP、Socket将会变得空前的简单。