基础准备 首先需要明白数据传输的底层实现机制,在http://blog.csdn.net/ns_code/article/details/15813809这篇博客中有详细的介绍,在上面的博客中,我们提到了SendQ和RecvQ缓冲队列,这两个缓冲区的容量在具体实现时会受一定的限制,虽然它们使用的实际 ...
分类:
编程语言 时间:
2017-12-14 03:20:04
阅读次数:
226
书上示例 在第一章《基本套接字》中,作者给出了一个TCP Socket通信的例子——反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去。 书上客户端代码如下: 书上的服务器端代码如下: 示例程序当然运行无误,运行结果如下: 问题的引出 首先明确几点: 1、客户端与服务器端在接收和发送 ...
分类:
编程语言 时间:
2017-12-14 00:04:56
阅读次数:
258
UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接。实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上添加了端口; 2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据。 Java通过Da ...
分类:
编程语言 时间:
2017-12-13 23:59:38
阅读次数:
360
TCP的Java支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套接字(使用TCP协议)和数据报套接字(使用UDP协 ...
分类:
编程语言 时间:
2017-12-13 23:59:28
阅读次数:
350
了解线程池 在http://blog.csdn.net/ns_code/article/details/14105457(读书笔记一:TCP Socket)这篇博文中,服务器端采用的实现方式是:一个客户端对应一个线程。但是,每个新线程都会消耗系统资源:创建一个线程会占用CPU周期,而且每个线程都会建 ...
分类:
编程语言 时间:
2017-12-13 23:51:16
阅读次数:
323
简介 Java NIO从JDK1.4引入,它提供了与标准IO完全不同的工作方式。 NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。 1、 Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。 2、 ...
分类:
编程语言 时间:
2017-12-13 23:48:52
阅读次数:
146
程序间达成的某种包含了信息交换的形式和意义的共识称为协议,用来实现特定应用程序的协议叫做应用程序协议。大部分应用程序协议是根据由字段序列组成的离散信息定义的,其中每个字段中都包含了一段以位序列编码(即二进制字节编码,也可以使用基于文本编码的方式,但常用协议如:TCP、UDP、HTTP等在传输数据时, ...
分类:
编程语言 时间:
2017-12-13 23:37:54
阅读次数:
191
在传输消息时,用Java内置的方法和工具确实很用,如:对象序列化,RMI远程调用等。但有时候,针对要传输的特定类型的数据,实现自己的方法可能更简单、容易或有效。下面给出一个实现了自定义构建和解析协议消息的Demo(书上例子)。 该例子是一个简单的投票协议。这里,一个客户端向服务器发送一个请求消息,消 ...
分类:
编程语言 时间:
2017-12-13 23:20:43
阅读次数:
125
1、使用 tcp 协议 读取 输入流的固定长度的字节数 public static byte[] getTcpSpecificBytes(BufferedInputStream bis,int length) throws IOException{ byte[] bytes = new byte[l ...
分类:
编程语言 时间:
2017-11-01 14:57:02
阅读次数:
209
转载请注明出处:http://blog.csdn.net/ns_code/article/details/14128987 UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接。实际上,UDP协议只实现了两个功能: ...
分类:
编程语言 时间:
2017-08-06 14:01:07
阅读次数:
252