Socket&IO
文章平均质量分 88
aitangyong
成长最快、最好的方式就是交流和总结!
展开
-
java socket编程中backlog的含义
服务端socket处理客户端socket连接是需要一定时间的。ServerSocket有一个队列,存放还没有来得及处理的客户端Socket,这个队列的容量就是backlog的含义。如果队列已经被客户端socket占满了,如果还有新的连接过来,那么ServerSocket会拒绝新的连接。也就是说backlog提供了容量限制功能,避免太多的客户端socket占用太多服务器资源。客户端每次创建一个Socket对象,服务端的队列长度就会增加1个。服务端每次accept(),就会从队列中取出一个元素。原创 2015-11-05 14:40:11 · 12957 阅读 · 4 评论 -
java网络编程(一):java传统的阻塞IO以及多线程解决方案
最近在看一些IO模型相关的东西,被同步IO、异步IO、阻塞IO、非阻塞IO概念弄的有点晕,后面再慢慢学习和领悟。我们以socket IO编程为例子,我用的是JDK1.7.0_80,测试工具用的是SocketTest。我们先学习下最简单、最原始的IO模型,在《Unix网络编程卷》中被称为:blocking IO。了解并发编程都知道:这种为每个客户端分配一个线程的方案,在高并发的场景下仍然不行。因为创建线程是要消耗系统资源的,不能无限制的创建线程,而且线程太多会导致频繁的上下文切换,这些都会影响性能。我们可以使原创 2015-11-04 16:09:02 · 3443 阅读 · 0 评论 -
Java NIO学习:缓冲区
使用InputStream读取文件内容的时候,我们都是用字节数组进行批量读取的,而不是一个一个字节的读。NIO中的缓冲区其实就和传统IO中的字节数组一样,都是为了提高IO性能。NIO里面为每种基本数据类型都提供了对应的缓冲区对象,如ByteBuffer、ShortBuffer、CharBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer。这几种缓冲区对象使用方式基本是一样的,这里以ByteBuffer为例学习下NIO中的缓冲区。原创 2015-11-15 13:52:30 · 832 阅读 · 0 评论