`
yogreen
  • 浏览: 663 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java Socket编程——之基础篇

    博客分类:
  • Java
阅读更多
    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入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java典型模块

    第1篇 Java开发必备基础 第1章 搭建Java开发环境 1.1 Java的过去、现在和未来 1.1.1 Java的历史 1.1.2 Java的语言特点 1.1.3 Java API简介 1.1.4 Java未来发展 1.2 Java程序设计环境 1.2.1 命令行工具——JDK 6.0 ...

    Java SE实践教程 源代码 下载

    4.1.1 流——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...

    Java开发技术大全 电子版

    第2篇Java面向对象编程 第3章对象和类98 3.1面向对象的基本概念98 3.1.1对象98 3.1.2类99 3.1.3消息101 3.1.4面向对象的4个基本特征101 3.2类与对象104 3.2.1类的基本结构104 3.2.2类的声明104 3.2.3创建...

    android开发揭秘PDF

    第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 3.1.1 Android项目目录结构 3.1.2 Android应用解析 3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结 第4章 用户界面开发 4.1 用户界面开发...

    《Android应用开发揭秘》源码

     第二部分 基础篇  第3章 Android程序设计基础  3.1 Android程序框架  3.1.1 Android项目目录结构  3.1.2 Android应用解析  3.2 Android的生命周期  3.3 Android程序U设计  3.4 小结  第4章 用户界面开发 ...

    javaSE代码实例

    第二篇 基础篇 第6章 对象和类——Java世界的细胞 77 6.1 面向对象概述 77 6.1.1 面向对象程序设计思想的诞生 77 6.1.2 面向过程与面向对象思想的对比 78 6.1.3 面向对象技术的背景和特点 79 6.2 类的...

    《Android应用开发揭秘》附带光盘代码.

     第二部分 基础篇  第3章 Android程序设计基础  3.1 Android程序框架  3.1.1 Android项目目录结构  3.1.2 Android应用解析  3.2 Android的生命周期  3.3 Android程序U设计  3.4 小结  第4章 用户界面开发 ...

    Android应用开发揭秘pdf高清版

    第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 3.1.1 Android项目目录结构 3.1.2 Android应用解析 3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结 第4章 用户界面开发 4.1 用户界面开发...

Global site tag (gtag.js) - Google Analytics