Java 网络编程的相关知识

一、网络编程概述

1、C/S 和 B/S

C/S 是客户端-服务器软件结构,服务提供商给予用户服务需要准备的内容。

  1. 各大平台的客户端
    Android iOS PC Windows Linux macOS
  2. 服务器提供服务
    软件更新时,服务器版本更新,同时本地软件也要进行更新操作,这个操作非常耗时。

B/S是浏览器-服务器软件结构,服务提供商只要提供数据服务以及前端数据展示方式就可以了。

  1. 浏览器提供商非常多
    谷歌,火狐,欧朋,Safari,Edge
  2. 服务器提供服务
    软件更新时,服务器更新数据,浏览器刷新就可以了。
2、网络通信协议

网络通信协议是要求双方传递数据的计算机必须遵守的,按照对应的网络传输协议才可以进入数据的交互和传递。

目前网络段数据传输比较常见的协议: UDP 和 TCP/IP

3、UDP 和 TCP/IP 的区别

UDP

  1. 面向无连接,数据传递不是特别安全。
  2. 因为面向无连接,所以传输速度快。
  3. 因为面向无连接,所以数据传递存在丢包问题。
  4. UDP没有客户端和服务器区别,都可以作为发送端和接收端。
    UDP协议的使用场景有直播,网络游戏等。

TCP/IP

  1. 面向连接,数据传递较为安全。
  2. 因为面向连接,所以传递速度较慢。
  3. 面向连接,数据传递有保障。
  4. TCP/IP协议是有明确的服务器和客户端概念。
    TCP/IP协议使用场景有客户端登陆,数据下载,文件传输等。
4、网络编程三要素
  1. 协议
    两个台计算机通过网络进行数据传递,都需要对应的协议来完成。

  2. IP地址
    Internet Protocol Address
    当前计算机在网络中的一个地址编号,类似于手机号号码
    IP地址有IPv4协议和IPv6协议
    IPv4是一个32位的二进制数,通常展示效果是a.b.c.d 例如 192.168.1.1
    a.b.c.d 各代表0 ~ 255的数字,目前已经消耗殆尽 42亿个
    IPv6能够保证地球上的每一粒沙子都有一个IP地址
    128位地址长度,16字节一组
    8组 0x0 ~ 0xFFFF

  3. 端口号
    端口号是当前应用程序在计算机中的一个编号。可以让计算机明确知道,当前的数据是给予哪一个程序使用,或者数据从哪一个程序出现的。
    端口号是一个short类型 0 ~ 65535
    0~1024不能用于自定义端口号使用,是特定的系统端口号。

二、IP类

SUN公司提供给开发者使用的IP地址类:InetAddress类

1、常用方法
InetAddress getLocalhost();
	获取本机IP地址类对象
InetAddress getByName(String str);
	根据指定的主机名获取对应的IP地址对象
InetAddress[] getAllByName(String str);
	根据指定主机名获取域名对应的所有IP地址类对象
2、使用演示
public class Demo {
	public static void main(String[] args) throws UnknownHostException {
		//获取本机IP地址类对象
		InetAddress localHost = InetAddress.getLocalHost();
		System.out.println(localHost);
		
		//根据指定的域名获取对应的IP地址对象
		InetAddress byName = InetAddress.getByName("www.csdn.net");
		System.out.println(byName);
		
		//根据指定主机名获取域名对应的所有IP地址类对象
		InetAddress[] allByName = InetAddress.getAllByName("www.baidu.com");
		for (InetAddress inetAddress : allByName) {
			System.out.println(inetAddress);
		}
	}
}

你可能感兴趣的:(Java网络编程)