网络编程-C/S、B/S结构、网络通讯

一.网络编程概述

1.1 软件结构

  • C/S结构:全称为Client/Server结构、是指客户端和服务器结构。常见的程序有QQ、迅雷等软件。
  1. 缺点:开发周期长,维护成本高。因为有客户端服务器端,客户端如APP等又分为安卓和IOS开发,需要投入更多的人力物力,增加了成本。
  2. 优点:部分运算交给客户端执行,减少了服务器端的压力。
  • B/S结构:全称为Browser/Server结构,是指浏览器服务器结构。常见的浏览器有谷歌、火狐等。
  1. 缺点:所有的运算交给服务器做,服务器所需要承受的压力大。
  2. 优点:只开发服务器端,节省了开发成本,开发周期短,维护成本低。
  • 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机之间的数据传输

 

 


 二、网络通讯的三要素

  • IP地址
  • 端口号
  • 通信协议

1.2.1 IP地址

  • IP地址:网络设备的唯一标识。通过IP地址可以找到对应的计算机。
  • 常见的IP地址分类:
  1. IPv4:是一个32位的二进制数,通常被分为4个字节,表示成a.b.c.d 的形式,例如192.168.65.100 。其中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示大约43亿个。
  2. IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。
    有资料显示,全球IPv4地址在2011年2月分配完毕。为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,表示成ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 ,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。
  • 常用命令:
  1. 查看本机IP地址,在控制台(cmd)输入:ipconfig
  2. 检查网络是否连通,在控制台输入:ping  空格  IP地址             ping  220.181.57.216
  3. 特殊的IP地址:本机IP地址: 127.0.0.1 、localhost 。

1.2.2 如何解决IPV4地址值不足的问题? 

  • 通过局域网共用一个外网IP地址可以解决这个问题,我们可以这样去理解,假设某个学校有一万台电脑,我们需要通过一个路由器上网,共用一个外网的IP地址,学校内部的局域网分配一个唯一的IP地址。

 

1.2.2 端口号

  • 端口号概述:就是一个十进制的整数。
  • 端口号作用:进程的唯一标识,每一个程序都会有一个端口号。
  • 取值范围:0到65535.
  • 注意事项:0到1024以下的端口号是系统保留使用的,程序员要使用1024以上的端口号。
  • 其中,0~1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

1.2.3 协议

  • 协议概述:用来规定计算机与计算机之间数据传输的格式。
  • 分类:UDP和TCP协议。
  • 网络通讯的三要素总结:通过IP找主机,通过端口号找程序,通过协议确定如何传输数据

1.3 IP地址类之InetAddress

  • InetAddress类概述:一个该类的对象就代表一个IP地址。无构造方法,有静态方法,可以直接通过类名调用。
  • InetAddress类静态方法
  1. static InetAddress getLocalHost();

      获得本地主机IP地址对象(获得自己的)

  1. static InetAddress getByName(String host);

      根据主机名或IP地址字符串获得IP地址对象 (获得别人的)

  • InetAddress类成员方法:
  • String getHostName(); 获得主机名
  • String getHostAddress(); 获得IP地址字符串
import java.net.InetAddress;
import java.net.UnknownHostException;

public class inetAddressDemo01 {
    public static void main(String[] args) throws UnknownHostException {
        //获得本地主机IP地址对象
        InetAddress ip01 = InetAddress.getLocalHost();

        //主机/IP地址字符串
        System.out.println(ip01.getHostName());//DESKTOP-PS8I3T1
        System.out.println(ip01.getHostAddress());//192.168.61.1

        //根据主机名或IP地址字符串获得IP地址对象
        InetAddress ip02 = InetAddress.getByName("192.168.43.1");
        System.out.println(ip02);//   /192.168.43.1
    }
}

猜你喜欢

转载自blog.csdn.net/Huangyuhua068/article/details/81609994
今日推荐