本文地址:http://blog.csdn.net/kongxx/article/details/7288896
Java Socket实战之一 单线程通信
Java Socket实战之二 多线程通信
Java Socket实战之三 传输对象
Java Socket实战之四 传输压缩对象
Java Socket实战之五 使用加密协议传输对象
前面几篇文章介绍了使用java.io和java.net类库实现的Socket通信,下面介绍一下使用java.nio类库实现的Socket。
java.nio包是Java在1.4之后增加的,用来提高I/O操作的效率。在nio包中主要包括以下几个类或接口:
* Buffer:缓冲区,用来临时存放输入或输出数据。
* Charset:用来把Unicode字符编码和其它字符编码互转。
* Channel:数据传输通道,用来把Buffer中的数据写入到数据源,或者把数据源中的数据读入到Buffer。
* Selector:用来支持异步I/O操作,也叫非阻塞I/O操作。
nio包中主要通过下面两个方面来提高I/O操作效率:
* 通过Buffer和Channel来提高I/O操作的速度。
* 通过Selector来支持非阻塞I/O操作。
下面来看一下程序中是怎么通过这些类库实现Socket功能。
首先介绍一下几个辅助类
辅助类SerializableUtil,这个类用来把java对象序列化成字节数组,或者把字节数组反序列化成java对象。
辅助类MyRequestObject和MyResponseObject,这两个类是普通的java对象,实现了Serializable接口。MyRequestObject类是Client发出的请求,MyResponseObject是Server端作出的响应。
下面主要看一下Server端的代码,其中有一些英文注释对理解代码很有帮助,注释主要是来源jdk的文档和例子,这里就没有再翻译
下面是Client的代码,代码比较简单就是启动了100个线程来访问Server
最后测试上面的代码,首先运行Server类,然后运行Client类,就可以分别在Server端和Client端控制台看到发送或接收到的MyRequestObject或MyResponseObject对象了。
关于NIO和IO的比较,下面的两篇文章对理解很有帮助,可以参考一下。
http://tutorials.jenkov.com/java-nio/nio-vs-io.html
https://blogs.oracle.com/slc/entry/javanio_vs_javaio
分享到:
相关推荐
Socket通信基于TCP/IP协议,确保数据的可靠传输,通过输入流和输出流进行数据交换。在实际应用中,Socket常用于实现分布式服务、聊天应用、文件传输等场景。 本书可能涵盖了以下主题: 1. NIO基础:介绍NIO的基本...
10. **实战应用**:Java Socket通信不仅限于命令行程序,还可以嵌入到Web应用、桌面应用中,例如,WebSocket协议就是基于TCP的Socket实现的,用于在Web浏览器和服务器之间进行全双工通信。 以上是对"基于Java的源码...
除了基础的Socket通信,Java还提供了NIO(Non-blocking I/O)Socket,支持多路复用,提高并发性能。此外,还有SSLSocket,用于加密通信,保障数据安全。 总结,Java Socket教程涵盖了从基础的Socket通信机制到高级...
Java Socket还支持其他高级功能,如SOCKET选项(如SO_REUSEADDR、SO_TIMEOUT)、SSL/TLS加密(javax.net.ssl包)以及NIO(非阻塞I/O)等,这些特性使得Java Socket在高性能、高安全性的网络应用中具有广泛的应用。...
Java Socket是Java编程语言中用于实现网络通信的核心API,它基于TCP/IP协议栈,提供了低级别的网络连接功能。Socket在Java中被广泛用于构建客户端-服务器应用,例如创建Web服务器、聊天应用程序、文件传输等。以下是...
Java Socket网络编程是Java开发中一个重要的组成部分,它允许应用程序通过网络进行通信,实现客户端与服务器之间的数据交换。本教程将深入探讨Java Socket编程的基本概念、原理和实践应用。 一、Socket基本概念 ...
Java套接字编程是网络通信的核心技术之一,它允许Java应用程序之间或应用程序与远程服务器之间的双向数据传输。本文将深入探讨Java Socket编程的基础知识、关键概念以及如何在实践中应用。 一、Socket概述 Socket,...
Java Socket通信是网络编程中的重要组成部分,主要用于实现客户端与服务器之间的双向通信。Socket在Java中提供了TCP(传输控制协议)的编程接口,使得开发者能够构建可靠的、基于连接的数据传输通道。下面将详细介绍...
在“java socket tcpip多线程网络通信服务器客户端”这个主题中,我们将深入探讨如何使用Java Socket实现基于TCP/IP协议的多线程服务器和客户端通信。 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的...
本课程旨在帮助学生全面理解 Java 网络编程中的 BIO、NIO、AIO 三剑客,掌握 RPC 编程的基础知识,并结合实战项目巩固所学。 一、网络编程三剑客 - BIO、NIO、AIO BIO(Blocking I/O)是一种同步阻塞式 I/O 模式,...
它们共同构建了Socket通信的基本框架。 1. **创建Socket连接**: - 客户端通过`Socket(String host, int port)`构造函数建立到指定服务器的连接。`host`是服务器的IP地址或域名,`port`是服务器监听的端口号。 - ...
《Java开发实战经典》这本书是Java开发者的重要参考资料,它涵盖了Java编程语言的核心技术和实践应用。以下将详细解析这本书可能涉及的知识点。 1. **Java基础知识**:书中首先会介绍Java的基础概念,包括Java的...
Java Socket教程是学习Java网络编程的核心内容,它涵盖了如何通过Java API进行客户端和服务器之间的通信。Socket在计算机网络中扮演着桥梁的角色,允许两台计算机(客户端和服务器)通过TCP/IP协议交换数据。本教程...
`java.nio.channels`包下的`SocketChannel`类提供了异步的Socket通信功能。 9. **实战示例**: - `NetDemo_17.java`可能是一个简单的Socket通信示例,它展示了如何创建Socket连接,交换数据以及关闭连接的基本步骤...
`java.nio.channels`包下的`ServerSocketChannel`和`SocketChannel`可以替代传统的`ServerSocket`和`Socket`。 9. **套接字选项**:`Socket`对象有多种配置选项,如设置超时时间、禁用Nagle算法等,可以通过`Socket...
Java Socket是Java编程语言中用于网络通信的核心API,它提供了低级别的、面向连接的、基于TCP/IP的通信机制。在Java Socket编程中,我们可以创建服务器端(ServerSocket)来监听客户端(Socket)的连接请求,然后...
在Java中,`java.net.Socket`类和`ServerSocket`类是实现Socket通信的核心。开发者需要定义客户端和服务端的交互协议,包括数据格式、请求类型和响应格式等,这正是“手写协议”的含义。 在这个系统中,协议设计至...
总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在SpringBoot环境中整合Mina实现高效的网络通信。通过这些知识的学习,你将具备开发高并发、高性能网络应用的能力。
- 针对"NetCommunication"这个文件,可能包含了一个简单的Java Socket通信示例,包括客户端和服务器端的代码。分析这些代码可以帮助理解如何在实际项目中应用Socket通信。 总的来说,Java Socket编程是网络编程的...
Java NIO(Non-blocking I/O)提供了另一种方式来处理Socket通信,它支持非阻塞I/O操作,可以提高服务器处理大量并发连接的能力。通过Selector和Channel,开发者可以更高效地管理多个Socket连接。 七、实战应用 ...