我为什么要学习Java网络编程,在实际的项目开发中,尤其是移动电信领域。很不辛或者是很辛运来到这个行业。之所以这样说是因为我之前做的项目一般的都是CRUD的基本操作,虽然说现在的Java企业架构一般都是面向微服务,诸如Spring Cloud,Spring Boot。或者是一些分布式框架,几乎都是面向服务的架构,服务的提供者,服务的消费者等等。我也是停留在会使用的阶段,虽然我知道分布式框架的底层都存在着Java网络通讯,可是始终不敢去正面的和他交锋,我之所以说不幸之处在于我从来没有去研究这块,辛运的是我不得不研究这块。我的项目的实际开发阶段,需要更多的网络编程。

1 家书抵万金

A要给B写信,那么首先要知道B的地址,然后通过邮局送达。B如果要回信,那么同样的也需要A的地址,也要通过邮局去送达。

在这里我们不关心邮局是如何送达信件的,是骑马也好,或者步行或者坐船等,这些过程或者方式我们是不需要关心的。上述的这种例子就是一个很好的计算机通讯的示例。

下面看一个模拟通讯的实例

packagecom.asiaInfo.caozg.ch_01;importjava.io.BufferedReader;importjava.io.IOError;importjava.io.InputStreamReader;/*** @Authgor: gosaint

* @Description:

* @Date Created in 12:35 2018/1/5

* @Modified By:*/

public classEchoPlayer {public staticString echo(String msg){return "echo :"+msg;

}public static void talk() throwsIOError{try{/*** 创建字符缓冲流对象,读取字符输入流*/BufferedReader br= new BufferedReader(newInputStreamReader(System.in));

String msg=null;while((msg=br.readLine())!=null){

System.out.println(echo(msg));if(msg.equals("bye")){break;

}

}

}catch(Exception e){

e.printStackTrace();

}

}public static voidmain(String[] args) {

talk();

}

}

调用talk()方法,当我们每输入一次,就会返回echo:xxx.知道输入的字符串和程序中的相等,程序执行完毕。这就像我们请求一次服务器一样,服务器会返回给我们一些数据,直到程序运行的终止

2 计算机网络概念

1 结点:在计算机网络中,每一台计算机都可以说是一个结点,也包括一些终端,比如路由器,打印机等。

2 网络协议:计算机之间的交流的方式。人和人之间使用语言交流,计算机之间的交流方式或者语言方式就是网络协议

3 Internet:提供了www服务,FTP(文件传输)服务,E-mail服务,Telnet(远程登陆)服务。

3 OSI模型

TCP/IP协议:问题来了,比如说上海人之间使用上海话交流,广东人之间使用粤语交流,那么上海人和广东人之间使用什么交流呢?答案自然是普通话。同样的一个网络使用A协议,一个网络使用B协议沟通,那么这两个网络之间怎么交流,答案就是TCP/IP协议。

比如说手机产生之初,每一个人的手机型号,品牌可能不相同,因此充电器也是不相同。你的手机没电了一般不可能使用我的充电器,到了最后,标准出来了,使用同样的USB接口,这样就解决了。网络之间也是这样的。为了解决网络之间的便利通讯,OSI标准出来了,open system interConnection。下面我们看看OSI的七层模型。

java 缘起_缘起 网络编程相关推荐

  1. Java并发编程实战_阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

    前言 为了帮助初级开发者快速掌握高并发.网络编程.微服务.海量数据的处理这些实用技术,本文以"理论+范例"的形式对各个知识点进行了详细的讲解,力争让读者在实践中快速掌握相关知识. ...

  2. 20165310 Java实验五《网络编程与安全》

    20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...

  3. Java面试知识点:网络编程

    问题:Java面试知识点:网络编程 答案: 1.InetAddress 代码如下: package com.xy;import java.net.InetAddress; import java.ne ...

  4. Java学习——Day14:网络编程

    7.1 网络编程概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程 序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网的 ...

  5. 阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

    前言 有人调侃我们说: 程序员不如送外卖.送外卖是搬运食物,自己是搬运代码,都不产出新的东西-- 透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险-- 想跳槽,但是更高的平台难进,同 ...

  6. Java语言进阶:网络编程入门

    Java语言进阶:网络编程 网络编程入门 C/S C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. 特点: 客户端和服务器是分开的,需要下载客户 ...

  7. 《亿级流量JAVA高并发与网络编程实战》笔记--------更新中

    <亿级流量JAVA高并发与网络编程实战>笔记 第一章 高并发概述 "高并发技术" 是一个广义的概念,是指一种高效的地实现并发需求的解决方案,是技术领域的名称,可以包含架 ...

  8. java scoket网络编程_嵌入式狗的JAVA之路 socket 网络编程

    又前进一步,进入网络编程. 虽然很多内容没有深入,不过近期还是追求尽量多吸收知识吧,然后在具体项目中深入. IP 端口 定义 TCP UDP通信 http 80 ftp 21 telnet 23 ja ...

  9. Java并发编程实战_真香!阿里P8耗时半年著作660页Java高并发与网络编程实战总结...

    随着软件行业的飞速发展,互联网公司对开发者的技能要求也越来越高.而高并发.网络编程.微服务.海量数据的处理等技能,是每一个开发者进阶时的必学知识.为了帮助初级开发者快速掌握这些实用技术,本书以&quo ...

最新文章

  1. Dapps-是一个跨平台的应用服务商店
  2. GdiPlus[44]: IGPGraphics (三) 关于文本绘制续 - IGPStringFormat
  3. 用OpenCV建立一幅只有几个像素且值可以自定义的图像,并输出保存到硬盘的方法
  4. [华为机试练习题]55.最大公约数 amp; 多个数的最大公约数
  5. F4IF_INT_TABLE_VALUE_REQUEST如何返回多于一个列
  6. 统一沟通-技巧-13-Lync-Polycom RMX 1500-配置
  7. PHP中file_exists与is_file、is_dir的区别,以及执行效率的比较
  8. json字符串中key值下划线命名转换为驼峰命名
  9. C#的变迁史06 - C# 4.0 之并行处理篇
  10. 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm
  11. flowable springboot 集成 flowableDMN_05
  12. 信息管理系统 github_Java+MySQL实现学生信息管理系统
  13. php 分页类 bootstrap,ThinkPHP分页使用bootstrap样式
  14. Foxit PDF SDK 下载地址
  15. 改动Oracle GoldenGate(ogg)各个进程的读检查点和写检查点
  16. java更新_java怎么更新
  17. android toast显示时间,Android Toast自定义显示时间
  18. makefile 目标:依赖文件写法
  19. e01文件镜像SHA1值
  20. Python实现冒泡排序,从小到大输出(bubble)

热门文章

  1. Win64 驱动内核编程-33.枚举与删除对象回调
  2. hdu4536 水搜索
  3. 【错误记录】Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )
  4. 【Android 逆向】类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )
  5. 【Android 逆向】Android 系统文件分析 ( cpuinfo 处理器信息文件 | self 当前进程信息文件 | meminfo 当前内存信息文件 )
  6. 【开发环境】PyCharm 配置 GitHub ( 在 PyCharm 中向 GitHub 提交代码 )
  7. 【Flutter】FutureBuilder 异步编程 ( FutureBuilder 构造方法 | AsyncSnapshot 异步计算 )
  8. 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 缓存策略 | LruCache 内存缓存 | LruCache 常用操作 | 工具类代码 )
  9. linux -- ./configure --prefix 命令
  10. 20169210《Linux内核原理与分析》第十一周作业