Java网络编程
文章平均质量分 89
兰亭风雨
在路上
展开
-
【Java TCP/IP Socket】深入剖析socket——TCP套接字的生命周期
转载请注明出处: TCP连接的建立 新的Socket实例创建后,就立即能用于发送和接收数据。也就是说,当Socket实例返回时,它已经连接到了一个远程终端,并通过协议的底层实现完成了TCP消息或握手信息的交换。 客户端连接的建立 Socket构造函数的调用与客户端连接建立时所关联的协议事件之间的关系下图所示: 当原创 2013-11-17 22:25:20 · 11172 阅读 · 0 评论 -
【Java TCP/IP Socket】基于线程池的TCP服务器(含代码)
了解线程池 在http://blog.csdn.net/ns_code/article/details/14105457(读书笔记一:TCP Socket)这篇博文中,服务器端采用的实现方式是:一个客户端对应一个线程。但是,每个新线程都会消耗系统资源:创建一个线程会占用CPU周期,而且每个线程都会建立自己的数据结构(如,栈),也要消耗系统内存,另外,当一个线程阻塞时,JVM将保存其原创 2013-11-08 08:23:38 · 25215 阅读 · 5 评论 -
【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)
问题的引出 在第一章《基本套接字》中,作者给出了一个TCP Socket通信的例子——反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去,示例程序当然运行无误。 书上客户端代码如下:import java.net.Socket;import java.net.SocketException;import java.io.IOException;i原创 2013-11-10 18:35:32 · 25000 阅读 · 13 评论 -
【Java TCP/IP Socket】应用程序协议中消息的成帧与解析(含代码)
程序间达成的某种包含了信息交换的形式和意义的共识称为协议,用来实现特定应用程序的协议叫做应用程序协议。大部分应用程序协议是根据由字段序列组成的离散信息定义的,其中每个字段中都包含了一段以位序列编码(即二进制字节编码,也可以使用基于文本编码的方式,但常用协议如:TCP、UDP、HTTP等在传输数据时,都是以位序列编码的)的特定信息。应用程序协议中明确定义了信息的发送者应该如何排列和解释这些位序列,同原创 2013-11-07 08:13:49 · 14743 阅读 · 4 评论 -
【Java TCP/IP Socket】UDP Socket(含代码)
UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接。实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上添加了端口; 2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据。 Java通过DatagramPacket类和DatagramSocket类来使用UDP套接字,客户端和服务器原创 2013-11-04 21:00:04 · 44136 阅读 · 16 评论 -
【Java TCP/IP Socket】深入剖析socket——TCP通信中由于底层队列填满而造成的死锁问题(含代码)
转载请注明出处: 基础准备 首先需要先了解下数据传输的底层实现机制,在http://blog.csdn.net/ns_code/article/details/15813809这篇博客中有详细的介绍,在上面的博客中,我们提到了SendQ和RecvQ缓冲队列,这两个缓冲区的容量在具体实现时会受一定的限制,虽然它们使用的实际内存大小会动态地增长和收缩,但还是需要一个硬性原创 2013-11-16 08:19:29 · 9847 阅读 · 3 评论 -
【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
NIO主要原理及使用 NIO采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的I/O,即在等待连接、读写数据(这些都是在一线程以客户端的程序中会阻塞线程的操作)的时候,程序也可以做其他事情,以实现线程的异步操作。 考虑一个即时消息服务器,可能有上千个客户端同时连接到服务器,但是在任何时刻只有非常少量的消息需要读取和分发(如果采用线程池或者一线程一客原创 2013-11-15 09:00:52 · 22496 阅读 · 4 评论 -
【Java TCP/IP Socket】Java NIO Socket VS 标准IO Socket
简介 Java NIO从JDK1.4引入,它提供了与标准IO完全不同的工作方式。NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。 1、 Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。 2、 Charset:它提供Unicode字符串影射到字节序列以及逆影原创 2013-11-12 08:08:08 · 7691 阅读 · 4 评论 -
【Java TCP/IP Socket】构建和解析自定义协议消息(含代码)
在传输消息时,用Java内置的方法和工具确实很用,如:对象序列化,RMI远程调用等。但有时候,针对要传输的特定类型的数据,实现自己的方法可能更简单、容易或有效。下面给出一个实现了自定义构建和解析协议消息的Demo(书上例子)。 该例子是一个简单的投票协议。这里,一个客户端向服务器发送一个请求消息,消息中包含了一个候选人的ID,范围在0~1000。程序支持两种请求:一种是查询请求原创 2013-11-07 18:33:48 · 21500 阅读 · 11 评论 -
【Java TCP/IP Socket】TCP Socket(含代码)
协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。 Java为TCP协议提供了两个类:Socket类和ServerSocket类。一个Socket实例代表了TCP连接的一个客户端,而一个ServerSocket实例代表了TCP连接的一个服务器端,一般在TCP原创 2013-11-03 17:03:02 · 78152 阅读 · 20 评论 -
【Java TCP/IP Socket】Socket编程知识点总结
转载请注明出处:TCP/IP Sockets in java 读书笔记第1章:简介1、协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析。2、TCP/IP协议族有IP协议、TCP协议和UDP协议。3、TCP协议和UDP协议使用的地址叫做端口号,用来区分同一主机上的不同应用程序。TCP协议和UDP协议也原创 2013-11-19 08:10:50 · 10040 阅读 · 1 评论 -
【Java TCP/IP Socket】Socket编程大合集
为了方便各位网友学习以及方便自己复习之用,将Java TCP/IP Socket编程系列内容按照学习顺序总结如下:【Java TCP/IP Socket】Java TCP Socket程编程【Java TCP/IP Socket】Java UDP Socket编程【Java TCP/IP Socket】应用程序协议中消息的成帧与解析【Java TCP/IP Socket】构建和解析自定义协议消息【Java TCP/IP Socket】基于线程池的TCP服务器【Java TCP/IP原创 2013-12-29 08:28:33 · 17543 阅读 · 8 评论 -
【Java TCP/IP Socket】深入剖析socket——数据传输的底层实现
转载请注明出处: 底层数据结构 如果不理解套接字的具体实现所关联的数据结构和底层协议的工作细节,就很难抓住网络编程的精妙之处,对于TCP套接字来说,更是如此。套接字所关联的底层的数据结构集包含了特定Socket实例所关联的信息。比附,套接字结构除其他信息外还包含: 1、该套接字所关联的本地和远程互联网地址和端口号。 2、一个FIFO(First Im原创 2013-11-15 09:02:00 · 23778 阅读 · 1 评论