网 络 编 程

网络编程

  1. 计算机网络

  1. 网络编程

实现多台计算机之间实现数据的共享和传递,网络应用程序主要组成为:

网络编程+IO流+多线程

  1. 网络模型

两台计算机之间的通信是根据什么规则来走的(OSI & TCP/IP)

此处简单了解该模型就行《TCP/IP详解》《TCP协议簇》

  1. 网络编程三要素

网络通讯的模型:请求-响应,客户端-服务端

三要素:IP地址,端口,协议(数据传输的规则)

    1. IP地址

IP地址:网络中计算机的唯一标识(IP地址是一个32位的二进制数据,为了方便,将一个字节的二进制转换为一个十进制的数据)

IP地址的组成:网络号段+主机段

A类IP地址:第一段号码为网络号码,剩下的三段号码为本地计算机的号码

----可以配置256*256*256台主机

B类IP地址:前二段号码为网络号码,剩下的二段号码为本地计算机的号码

C类IP地址:前三段号码为网络号码,剩下的一段号码为本地计算机的号码

补充:

A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络屏蔽为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。

B类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络屏蔽为:255.255.0.0;

C类地址的表示范围为:192.0.0.0~223.255.255.255,默认网络屏蔽为:255.255.255.0;C类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。

特殊地址:

127.0.0.1 回环地址,可用于测试本机的网络是否有问题. ping 127.0.0.1   

DOS命令 ipconfig:查看本机IP地址

xxx.xxx.xxx.255 广播地址

访问百度(IP和域名--DNS服务器)

一个IP可以对应多个域名,但是一个域名在一个时刻只能对应一个IP

    1. 端口号

正在运行的程序的标识

  1. A:每个网络程序都会至少有一个逻辑端口
  2. B:用于标识进程的逻辑地址,不同进程的标识不同
  3. C:有效端口:0~65535,其中0~1024系统使用或保留端口。
    1. 80
    2. ftp:23
    3. www.baidu.com:80
  4. 通过第三方工具可以查看

注意:端口与协议有关:TCP和UDP的端口互不相干,同一个协议的端口不能重复,不同协议的可以重复

TCP:10086

UDP:10086

    1. 协议

通信规则,就是数据的传输规则

TCP、UDP都是传输层的协议

TCP

建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低,例如:打电话

UDP

将数据源和目的封装到数据包中,不需要建立连接;每个数据报的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快:例如发短信

看看如何采用API来进行网络编程?IP 端口 协议

  1. InetAddress类

用来表示主机的信息

getByName

public static InetAddress getByName(String host)                             throws UnknownHostException

在给定主机名的情况下确定主机的 IP 地址。

主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,则仅检查地址格式的有效性。

getLocalHost

public static InetAddress getLocalHost()                                throws UnknownHostException

返回本地主机。  

练习:

1,分别采用localhost(域名)和ip地址作为参数,获取InetAddress对象,并打印该对象信息,观察其输出的结果是否有差别?

2,掌握getLocalHost方法的作用

C:\Windows\system32\drivers\etc\ hosts

一个主机可以放多个个人网站

www.baidu.com/14.215.177.37

www.baidu.com/14.215.177.38

www.taobao.com/183.61.241.252

www.taobao.com/121.14.89.253

  1. Socket

Scoket也叫套接字,其表示的是IP地址和端口号的组合。

网络编程主要就是指Socket编程,网络间的通信其实就是Socket间的通信,数据就通过IO流在两个Scoket间进行传递。

Socket

  1. TCP编程

API:Socket,ServerSocket

客户端(发送一个请求) 服务端(接收到这个请求,给予响应)

案例驱动学习:

    1. 简单的TCP通信
      1. 编写服务端程序
      2. 编写客户端程序
      3. 客户端向服务端发送请求信息,服务端成功接收
      4. 服务端向客户端发送响应信息,客户端成功接收
    2. 升级服务端,使其处理多个客户端请求
    3. 继续优化服务端,让多个客户端的请求无需排队
    4. 关闭资源-提取工具类

  1. TCP案例

任务:

  1. 基本操作
  2. 传递文件
  3. 一对一聊天
  4. 优化一对一聊天
  1. TCP三次握手 和 四次挥手

  1. UDP编程
  1. 简介

UDP(User Datagram Protocol)用户数据报包协议,UDP和TCP位于同一层-传输层,但它对于数据包的顺序错误或重发没有TCP可靠;UDP是一种面向无连接的通信协议。UDP向应用程序提供一种发送封装的原始IP数据报的方法,并且发送时无需建立连接,不保证可靠数据的传输

UDP --- 发短信

TCP --- 打电话

案例:

    1. 简单的UDP通信
    2. 可以一对一随便聊,而且读写分离

2.TCP VS UDP (学习后自行比对)

TCP UDP

是否连接 面向连接 无面向连接

传输可靠性 可靠 不可靠

应用场合 传输大量数据 少量数据

速度 慢 快

  1. 所需学习类

DatagramPacket ---此类表示数据报包

DatagramSocket ---此类用来发送和接受数据报包的套接字

SocketAddress getLocalSocketAddress() 返回此套接字绑定的端点的地 址,如果尚未绑定则返回 null。

 Void send(DatagramPacket p) 从此套接字发送数据报包。

 Void receive(DatagramPacket p) 从此套接字接收数据报包。

SocketAddress ---抽象类,IP+端口号

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值