java网络编程

1. 网络编程概述

1.1 C/S和B/S
  • C/S
    客户端 服务器软件结构
    服务提供商给予用户服务需要准备的内容

  • 各大平台的客户端
    Android iOS PC Windows Linux macOS
    QQ 微信 淘宝 JD 剑与远征
    服务器提供服务

  • 软件更新:
    LOL服务器版本更新,同时本地软件也要进行更新操作。这个操作非常耗时的更新

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

  • 浏览器提供商非常非常多
    谷歌,火狐,欧朋,Safari,Edge
    服务器提供服务

  • 软件更新:
    服务器更新数据,浏览器刷新就ok了

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

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

1.3 UDP和TCP/IP区别
  • UDP

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

  • TCP/IP

面向连接,数据传递较为安全
因为面向连接,所有传递速度较慢
面向连接,数据传递有保障
TCP/IP协议是有明确的服务器和客户端概念
TCP/IP协议使用场景
客户端登陆,数据下载,文件传输

1.4 网络编程的三要素
  • 协议
    两个在于网络情况下的计算机数据传递,都需要对应的协议来完成。

  • 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
    IPv6是能够保证地球上的每一粒沙子都有一个IP地址。
    128位地址长度,16字节一组
    8组 0x0 ~ 0xFFFF

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

2. IP类
  • SUN公司提供给开发使用的IP地址类
    InetAddress
    常用方法:
       InetAddress getLocalhost();
         获取本机IP地址类对象
       InetAddress getByName(String str);
         根据指定的主机名获取对应的IP地址对象
       InetAddress[] getAllByName(String str);
         获取指定主机名,或者域名对应的所有IP地址类对象
3. UDP协议数据传输
  • UDP数据传输方式
    User Datagram Protocol
    数据传递采用数据包方式传递,所有的数据要进行打包操作,并且没有对应的客户端服务器概念,有且只有发送段和接收端

  • Socket 套接字
    数据需要进行传递操作,在数据传递的两台计算机当中必须有对应的Socket。这里采用UDP协议,那么必须有一个UDP协议的Socket

    • DatagramSocket();
      创建一个发送端UDP协议Socket对象
    • DatagramSocket(int port);
      创建一个接收端UDP协议的Socket对象,这里需要【监听】指定端口
  • 发送端数据包的打包方法:
    DatagramPacket DatagramPacket(byte[] buf, int length, InetAddress address, int port);

buf: 需要传递数据的字节数组
length:是当前字节数组中数据容量字节数
address:接收端IP地址对象
port: 接收端对应的端口号

  • 接收端数据包接收方式
    这里需要准备一个空的数据包
    DatagramPacket DatagramPacket(byte[] buf, int length);
    buf: 字节缓冲数组,通常是1024整数倍
    length: 当前字节缓冲数组的容量
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值