
Java网络编程
文章平均质量分 82
咖啡Q伴侣
纸上得来终觉浅,绝知此事要躬行! 代码虐我千百遍,我视代码如初恋!
展开
-
第一篇:JAVA网络编程之TCP Socket(含代码)
TCP的Java支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套接字(使用TCP协议)和数据报套接字(使用UDP协议)。 TCP协议提供面向连接的服务,通过它建立的是可靠地连接。Java为TC原创 2017-08-14 15:35:14 · 534 阅读 · 0 评论 -
第十篇:深入剖析socket——TCP通信中由于底层队列填满而造成的死锁问题(含代码)
基础准备 首先需要明白数据传输的底层实现机制,在http://blog.youkuaiyun.com/u012426327/article/details/77214901这篇博客中有详细的介绍,在上面的博客中,我们提到了SendQ和RecvQ缓冲队列,这两个缓冲区的容量在具体实现时会受一定的限制,虽然它们使用的实际内存大小会动态地增长和收缩,但还是需要一个硬性的限制,以防止行为异常的程序所控制的单原创 2017-08-16 09:28:58 · 1290 阅读 · 0 评论 -
第五篇:JAVA网络编程之基于线程池的TCP服务器(含代码)
了解线程池 在http://blog.youkuaiyun.com/ns_code/article/details/14105457(读书笔记一:TCP Socket)这篇博文中,服务器端采用的实现方式是:一个客户端对应一个线程。但是,每个新线程都会消耗系统资源:创建一个线程会占用CPU周期,而且每个线程都会建立自己的数据结构(如,栈),也要消耗系统内存,另外,当一个线程阻塞时,JVM将保存其原创 2017-08-14 15:40:09 · 618 阅读 · 0 评论 -
网络编程汇总
不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!JAVA网络编程JAVA网络编程之TCP Socket(含代码)JAVA网络编程之UDP Socket(含代码)JAVA网络编程之应用程序协议中消息的成帧与解析(含代码)JAVA网络编程之构建和解析自定义协议消息(含代码)JAVA网络编程之基于线程池的TCP服务器(含代码)原创 2017-08-28 09:56:45 · 549 阅读 · 0 评论 -
第十二篇:Socket编程知识点总结
简介1、协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析。2、TCP/IP协议族有IP协议、TCP协议和UDP协议。3、TCP协议和UDP协议使用的地址叫做端口号,用来区分同一主机上的不同应用程序。TCP协议和UDP协议也叫端到端传输协议,因为他们将数据从一个应用程序传输到另一个应用程序,而IP协议只是将数据从一个原创 2017-08-16 09:36:55 · 329 阅读 · 0 评论 -
第九篇:深入剖析socket——数据传输的底层实现
底层数据结构 如果不理解套接字的具体实现所关联的数据结构和底层协议的工作细节,就很难抓住网络编程的精妙之处,对于TCP套接字来说,更是如此。套接字所关联的底层的数据结构集包含了特定Socket实例所关联的信息。比附,套接字结构除其他信息外还包含: 1、该套接字所关联的本地和远程互联网地址和端口号。 2、一个FIFO(First Im First Out)队列,用于存放原创 2017-08-16 09:27:24 · 337 阅读 · 0 评论 -
第八篇:基于NIO的TCP通信(含代码)
NIO主要原理及使用 NIO采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的I/O,即在等待连接、读写数据(这些都是在一线程以客户端的程序中会阻塞线程的操作)的时候,程序也可以做其他事情,以实现线程的异步操作。 考虑一个即时消息服务器,可能有上千个客户端同时连接到服务器,但是在任何时刻只有非常少量的消息需要读取和分发(如果采用线程池或者一线程一客原创 2017-08-16 09:25:52 · 500 阅读 · 0 评论 -
第七篇:Java NIO Socket VS 标准IO Socket
简介 Java NIO从JDK1.4引入,它提供了与标准IO完全不同的工作方式。NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。 1、 Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。 2、 Charset:它提供Unicode字符串影射到字节序列以及逆影原创 2017-08-16 09:24:39 · 270 阅读 · 1 评论 -
第六篇:JAVA网络编程之TCP Socket通信中由read返回值造成的的死锁问题(含代码)
书上示例 在第一章《基本套接字》中,作者给出了一个TCP Socket通信的例子——反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去。 书上客户端代码如下:[java] view plain copyimport java.net.Socket; import java.net.SocketExc原创 2017-08-14 15:41:45 · 594 阅读 · 0 评论 -
第四篇:JAVA网络编程之构建和解析自定义协议消息(含代码)
在传输消息时,用Java内置的方法和工具确实很用,如:对象序列化,RMI远程调用等。但有时候,针对要传输的特定类型的数据,实现自己的方法可能更简单、容易或有效。下面给出一个实现了自定义构建和解析协议消息的Demo(书上例子)。 该例子是一个简单的投票协议。这里,一个客户端向服务器发送一个请求消息,消息中包含了一个候选人的ID,范围在0~1000。程序支持两种请求:一种是查询请求原创 2017-08-14 15:38:15 · 937 阅读 · 0 评论 -
第三篇:JAVA网络编程之应用程序协议中消息的成帧与解析(含代码)
程序间达成的某种包含了信息交换的形式和意义的共识称为协议,用来实现特定应用程序的协议叫做应用程序协议。大部分应用程序协议是根据由字段序列组成的离散信息定义的,其中每个字段中都包含了一段以位序列编码(即二进制字节编码,也可以使用基于文本编码的方式,但常用协议如:TCP、UDP、HTTP等在传输数据时,都是以位序列编码的)的特定信息。应用程序协议中明确定义了信息的发送者应该如何排列和解释这些位序列,同原创 2017-08-14 15:37:15 · 405 阅读 · 0 评论 -
第二篇:JAVA网络编程之UDP Socket(含代码)
UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接。实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上添加了端口; 2)对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据。 Java通过DatagramPacket类和DatagramSock原创 2017-08-14 15:36:02 · 340 阅读 · 0 评论 -
第十一篇:深入剖析socket——TCP套接字的生命周期
建立TCP连接 新的Socket实例创建后,就立即能用于发送和接收数据。也就是说,当Socket实例返回时,它已经连接到了一个远程终端,并通过协议的底层实现完成了TCP消息或握手信息的交换。 客户端连接的建立 Socket构造函数的调用与客户端连接建立时所关联的协议事件之间的关系下图所示: 当客户端以服务器端的互联网原创 2017-08-16 09:33:08 · 1054 阅读 · 0 评论