Java语言进阶:网络编程


网络编程入门

C/S

  • C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。
  • 特点: 客户端和服务器是分开的,需要下载客户端,对网络要求相对低, 服务器压力小,开发和维护成本高,相对稳定

B/S

  • B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。

  • 特点:没有客户端,只有服务器,不需要下载客户端,直接通过浏览器访问, 对网络要求相对高, 服务器压力很大,相对不稳定,开发和维护成本低,


小结

两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机在网络中的通信的程序。


网络通信协议

通信协议是计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守,最终完成数据交换。

java.net 包中提供了两种常见的网络协议的支持:

1.TCP

  • TCP:传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输

  • TCP协议特点: 面向连接,传输数据安全,传输速度低

  • 例如: 村长发现张三家的牛丢了

  • TCP协议: 村长一定要找到张三,面对面的告诉他他家的牛丢了 打电话: 电话一定要接通,并且是张三接的

    • 连接三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠。

      • 第一次握手,客户端向服务器端发出连接请求,等待服务器确认。 你愁啥?
      • 第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。我愁你咋地?
      • 第三次握手,客户端再次向服务器端发送确认信息,确认连接。整个交互过程如下图所示。你再愁试试

完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等


2.UDP:

  • UDP:用户数据报协议(User Datagram Protocol)。UDP协议是一个面向无连接的协议。传输数据时,不需要建立连接,不管对方端服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。每个数据包的大小限制在64k以内。它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。日常应用中**,例如视频会议、QQ聊天等。**
  • UDP特点: 面向无连接,传输数据不安全,传输速度快
  • 例如: 村长发现张三家的牛丢了
  • UDP协议: 村长在村里的广播站广播一下张三家的牛丢了,信息丢失,信息发布速度快

IP地址

  • IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。

IP地址分类

  • IPv4:是一个32位的二进制数,通常被分为4个字节,表示成a.b.c.d 的形式,例如192.168.65.100 。其中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示42亿个。

  • IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。有资料显示,全球IPv4地址在2011年2月分配完毕。

    为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,表示成ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。

常用命令

  • 查看本机IP地址,在控制台输入:
ipconfig
  • 检查网络是否连通,在控制台输入:
ping 空格 IP地址
ping 220.181.57.216
ping www.baidu.com

特殊的IP地址

  • 本机IP地址:127.0.0.1localhost

端口号

网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分这些进程呢?

如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。

  • 端口号:用两个字节表示的整数,它的取值范围是0 -65535。其中,0~1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

利用协议+IP地址+端口号 三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其它进程进行交互。

常用指令:

//查看windows 端口
netstat -aon | findstr 端口

Java语言进阶:网络编程入门相关推荐

  1. Java语言的网络编程

    网络编程入门 1.1软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. B/S结构 :全称为Browser/Server结构,是指浏览器 ...

  2. Java基础进阶网络编程概述

    一.网络编程中有两个主要的问题: 1.如何准确地定位网络上一台或多台主机:定位主机上的特定的应用 2.找到主机后如何可靠高效地进行数据传输 二.网络编程中的两个要素: 1.对应问题一:IP和端口号 2 ...

  3. Java中的网络编程入门

    网络编程 软件结构 C/S结构: 全称为 Client/Server 结构,是指客户端和服务器结构. B/S结构: 全程为 Browser/Server 结构, 是指浏览器和服务器结构. 网络编程,就 ...

  4. 【Java语言】初级编程入门 2的n次方

    题目描述 不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算. 输入描述: 多组输入,每一行输入整数n(0 <= n < 31). 输出描述: 针对每组输入输出对 ...

  5. Android网络编程入门解析

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  6. Java学习之网络编程实例

    转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...

  7. Java网络编程(一)网络编程入门知识

    文章目录 第一章 Java网络编程入门 1.前言 1.1 进程之间的通信 1.2 计算机网络概念 1.3 网络模型之OSI参考模型 1.4 TCP/IP参考模型和TCP/IP协议 1.4.1 模型解析 ...

  8. Java核心类库之(网络编程:网络编程入门、UDP通信程序、TCP通信程序)

    目录 1 网络编程入门 1.1 网络编程概述 1.2 网络编程三要素 1.3 IP地址 1.4 InetAddress的使用 1.5 端口 1.6 协议 2 UDP通信程序 2.1 UDP通信原理 2 ...

  9. Java—网络编程入门

    目录 1.网络编程入门 1.1网络编程概述 1.2网络编程三要素 1.3IP地址 1.4InetAddress的使用 1.网络编程入门 1.1网络编程概述 计算机网络 是指将地理位置不同的具有独立功能 ...

最新文章

  1. 手写 Spring 事务、IOC、DI 和 MVC
  2. socket 读取 所有 数据 java_Java Socket 读取服务器端返回数据
  3. linux下shell显示-bash-4.1#不显示路径解决方法
  4. 云计算服务在小企业中的作用?
  5. C#线程系列讲座(1):BeginInvoke和EndInvoke方法
  6. java 消息队列_java消息队列
  7. c# Invoke和BeginInvoke
  8. UIAlertAction添加输入框
  9. java 排列3_java中的三大排序算法
  10. 支付宝打年兽神器 v1.4.5
  11. 短信hz,批量注册、模拟登陆很难吗?一个Python爬虫案例告诉你答案!
  12. 提取某一个镇的行政边界_关于获取某个省份下面的 镇的 行政区划编码。
  13. Visual Studio开启SSL的支持
  14. TensorFLow RCNN
  15. polycom安卓手机客户端_Spark,安卓上最好用的邮件客户端来了!附App下载
  16. 用python编写决策树算法_详细介绍python实现决策树C4.5算法
  17. sid图像数据_【技术前沿】首届“水下机器人目标抓取大赛”第一名的图像增强方法...
  18. ubuntu安装firefox flash插件
  19. Python3.7 下安装pyqt5
  20. 我对前端开发的粗浅认知

热门文章

  1. 【UML】UML类图详解
  2. 拥有对抗复杂时代的底层能力,数据达人云集的宝藏圈子,邀您加入!
  3. android10 三星升级计划,国行三星手机Android 10.0升级计划表 Note10明年2月升级
  4. Chrome 控制台切换成黑暗模式
  5. 数值积分的python实现——NewtonCotes、复化求积、Romberg、richardson递推
  6. 隔墙有耳的观察者模式(Observer Patern)
  7. MySQL主从数据库同步(巨详细),亲测好用!!!
  8. html5 隐藏video控件的下载按钮
  9. 系统重构与新旧系统切换方案概述
  10. 切断计算机主机电源,我在电脑关机时直接关闭了总电源