Socket是CPU进程通信链路的基础组件,概念最初来自于贝尔实验室的Unix系统项目组。Java的创始者们都是Unix的拥趸,所以Java对Socket的支持是纯天然的。Java的web应用服务器在互联网应用产品中一家独大,持续引领了20多年,都只是唯一没有之一。每个服务器通信交互的核心组件实现都是围绕着Socket来展开的----Weblogic、Websphere、JBoss、Tomcat、Jetty、HDFS/Hbase/zookeeper等等,架构上都存在着差异,可都殊路同归。
一、Socket java API基础
Java中Socket是C/S结构的,C/S的概念就是Client端和Server端,Java Socket的服务端API是ServerSocket,似乎Socket就理所当然是Client的概念了(然而,打住,确切地说应该叫endpoint。概念相关的理解很熬人,纠结概念让人面红脖子粗、寝食难安,那就这么着了,爱谁谁谁!!!)。
a.coding准备
JDK、Eclipse、Windows、Linux。
为什么是两个系统平台(Windows、Linux)?为更切合实际网络应用,所以使用两个异构的操作系统。条件允许可以使用两个物理机,但我的条件只允许我安装VMware虚拟机进行测试。但无论如何两台服务器必须物理上网络是连通的,iptables对端口的限制有必要配置放开一些端口的访问。好了,基础设施具备,您现在应该如我这般编写代码:
Socket_code1:
Socket_code_2:
code_1是Server端简单得不能再简单的代码了,代码10行创建ServerSocket实例,并在构造方法上传入Server端的端口号,打印System的user.dir是我想看JVM在运行java命令时JVM的工作目录,打印hashcode是想验证是不是每次连接都创建新的ServerSocket,将code_1代码上传到linux服务器,我运行的命令格式是:java -cp .:/opt com.yogreen.socket.SocketServerBoot,在开发环境使用Eclipse运行code_2代码,运行结果如下图:
可看见每次连接ServerSocket的hashcode都是同一个。而Socket的hashcode却在不断变化。
好的,入门级的Java Socket脑补也就这样了。接下来的系列是对象流的传输,远程方法调用、心跳广播,缓存服务发布和简单并行计算开发。
b.总结
Java Socket 使用一对ServerSocket/Socket API实现两个或两个以上的JVM进程间的通信,由于Java的跨平台的特性,无论进程是在同一物理机或网络中的不同节点的进程,甚至异构系统的平台,开发者都不必关心,只要创建了ServerSocket(需要指定服务端口),Socket可通过ip/端口参数创建与Server的连接,从而达到两个JVM的通信,继而实现两个物理机的通信,从1到2,2到3,3到无穷,网络计算服务由此而来。
- 大小: 102 KB
- 大小: 58 KB
- 大小: 31.7 KB
分享到:
相关推荐
Java中的Socket编程是网络通信的基础,它允许两个网络应用程序通过TCP/IP协议进行数据交换。在Java中,Socket类和ServerSocket类是实现客户端-服务器通信的核心。本篇将深入探讨这两个类以及它们在创建、连接、发送...
以下是对给定的三个部分——"JAVA面试题集基础篇"、"JAVA面试题集高级篇"、"JAVA面试题集编程篇"的详细解析。 **JAVA面试题集基础篇** 基础篇主要关注Java语法和核心概念。这部分可能会包含以下几个方面的知识点:...
本篇文章将详细探讨Java网络编程和QQ聊天程序的相关知识点,旨在帮助你掌握JAVA WEB编程的核心技能。 1. **Java网络编程基础** - Java提供了丰富的API来处理网络通信,如Socket、ServerSocket、HttpURLConnection...
### Java语言编程—网络编程 ...- [Socket编程指南](https://www.tutorialspoint.com/java_network_programming/index.htm) 以上就是关于Java语言编程在网络编程领域的相关内容介绍。希望对大家有所帮助!
8. **网络编程**:Java提供Socket编程接口,可以创建基于TCP/IP的客户端和服务端应用程序。 9. **反射**:Java反射机制允许在运行时动态获取类的信息并操作类的对象,是Java的重要特性之一。 10. **泛型**:泛型是...
首先,我们来了解Java网络编程的基础——TCP/IP协议。TCP(传输控制协议)和IP(互联网协议)是互联网通信的基石。TCP提供面向连接的服务,确保数据的可靠传输,而IP则负责数据的路由和寻址。Java通过Socket类提供了...
8. **技术栈**:报告中提到了Java Swing库,用于创建图形用户界面(GUI),如JFrame、JLabel、JTextField、JButton、JList等组件,以及Socket编程,用于实现客户端与服务器之间的网络通信。 这个项目涉及到网络编程...
本篇将深入浅出地为Java初学者讲解其入门知识,帮助你快速掌握这门强大的编程工具。 一、Java简介 Java是由Sun Microsystems公司(现已被Oracle收购)于1995年推出的,由詹姆斯·高斯林(James Gosling)等人设计。...
本篇主要探讨的是两种主流的编程语言——Java和C#在网络编程方面的应用和技术。 首先,Java网络编程以其跨平台的特性,广泛应用于服务器端开发。Java提供了丰富的API,如Socket、ServerSocket、HttpURLConnection等...
7. **网络编程**: Java的Socket和ServerSocket类用于实现客户端-服务器通信,是网络编程的重要部分。 8. **JDBC**: Java Database Connectivity允许Java程序与各种数据库交互,是开发数据库应用的基础。 9. **反射...
### Java经典编程100例之UDP篇 #### 一、引言 在《Java经典编程100例》系列中,每一章节都精选了Java编程中的经典案例,旨在通过实际编程实例帮助读者掌握Java的核心技术和应用技巧。本篇文章聚焦于第18例——UDP...
《深入解析Java Socket编程——基于TestSocket源码分析》 在Java编程中,Socket通信是网络编程的基础,它提供了一种在不同计算机间交换数据的机制。本篇文章将基于名为"TestSocket-源码.rar"的压缩包文件,深入探讨...
1. **基础篇** - **变量与数据类型**:Java提供了多种数据类型,包括基本类型和引用类型。理解它们的用法和存储机制是编程的基础。 - **流程控制**:掌握if语句、switch语句、for循环、while循环等,以及break和...
Java技能百练——网络篇是针对Java开发者在网络编程方面的深入学习和实践。在这个主题中,我们将探讨Java在处理网络通信、数据传输以及网络服务开发等多个关键领域的应用。下面,我们将详细解析Java网络编程的一些...
9. **网络编程**:Java的Socket编程是构建网络应用程序的重要部分,可能涉及TCP和UDP通信、服务器端和客户端编程。 10. **Java API和标准库**:介绍Java标准库中的各种类和方法,如IO流、集合框架、日期时间API等,...
第6节将聚焦于Java NIO中的Socket通道操作,这是网络编程中的重要一环。SocketChannel是基于TCP协议的,提供了一种可靠的数据传输方式。我们将学习如何创建和配置SocketChannel,以及如何通过它进行数据的读写。此外...
第一部分:《Java核心——基础篇》(Core Java 2 Volume I - Fundamentals Seventh Edition) 该书的基础篇主要覆盖了以下几个关键知识点: 1. **Java编程基础**:包括Java开发环境的搭建,基本语法,数据类型,...
### Java基础篇 #### 1. Java语言概述 Java是一种广泛使用的高级编程语言,以其平台无关性、面向对象、安全性等特性而闻名。了解Java的历史背景、设计哲学以及其在现代软件开发中的地位对于初学者至关重要。 #### ...
JDK 6提供了Socket编程接口,用于建立客户端-服务器通信。此外,URL和URLConnection类提供了访问网络资源的能力。 七、多线程 Java的多线程模型在JDK 6中得到进一步完善,线程的创建、同步和通信有了更多的控制选项...
《JAVA程序设计与问题解决》是一本全面介绍Java编程语言的教材,分为基础篇和高级篇,由美国知名计算机科学家Walter Savitch撰写,并有中文翻译版本。这本书旨在帮助读者从零开始学习Java编程,逐步掌握解决问题的...