Java 基础


第三阶段 分析需求、提高代码实现能力

韩顺平python 韩顺平的java课怎么样_韩顺平python

第一章 网络编程

一、网络相关概念

1、网络通信 两台设备 、程序

韩顺平python 韩顺平的java课怎么样_java_02

2、网络

韩顺平python 韩顺平的java课怎么样_韩顺平python_03

3、ip地址 主机(计算机)的居住地址

韩顺平python 韩顺平的java课怎么样_java_04

ip地址的组成 = 网络地址 + 主机地址
可以类比为:网络地址(北京市海淀区xx小区) + 主机地址(房间号)
ipv4:

韩顺平python 韩顺平的java课怎么样_韩顺平python_05

ipv6:ipv4不不够分配了。IPv6想要替代ipv4,但目前是两个都在使用。

韩顺平python 韩顺平的java课怎么样_网络_06


韩顺平python 韩顺平的java课怎么样_韩顺平python_07

4、域名 为了解决ip地址记忆的困难
使用http协议 将ip地址 映射为域名
5、端口 主机提供的网络服务≠程序
用两个字节表示端口号,可以表示的范围是0~65535.0~1024已经被固定的服务占用啦

6、网络通讯协议 网络编程中 数据的组织形式
类比 :人与人 通过 语言交流

韩顺平python 韩顺平的java课怎么样_网络_08

TCP/IP协议,中文是传输控制协议/因特网互联协议

韩顺平python 韩顺平的java课怎么样_数据库_09


韩顺平python 韩顺平的java课怎么样_java_10

TCP 和 UDP
TCP 必须有三次握手、可靠;大数据;效率低【打电话
UDP 不需要建立连接、不可靠;64KB以内的数据;速度快【发短信

7、InetAddress类

韩顺平python 韩顺平的java课怎么样_数据库_11

相关方法:

8、Socket 非常重要,TCP编程、UDP编程都会用
ip地址看作具体的房屋、端口看作 不同的门、socket对象就是门的开关,传输的流或者数据包都当做快递员。
基本介绍
图解
9、基于Socket的TCP网络通信编程

韩顺平python 韩顺平的java课怎么样_数据库_12


韩顺平python 韩顺平的java课怎么样_数据库_13

编程样例
(1)使用字节流
单个客户端:

韩顺平python 韩顺平的java课怎么样_韩顺平python_14

服务端:先启动

注意:socket传输字节输出流、字节输入流自己不知道数据何时结束,所以每次发送完数据应该手动设置socket.shutdownOutput()。
(2)使用字符流
注意1:socket传输字符输出流、字符输入流,newline()方法标记写入内容结束,所以不需要使用socket.shutdownOutput()。但是要求对方使用readline()读取数据!!!
注意2:但是需要使用.flush()方法手动刷新
(3)网络上传文件
代码演示地址
netstat指令(在dos命令行使用)
TCP网络通信的秘密
10、基于DatagramSocket 和 DatagramPacket 的UDP网络通信编程
注意1: UDP不再有客户端和服务端的概念,转而成为数据的发送端和接收端
注意2:原理图解
流程
  • 细节1:DatagramPacket 构造方法中写明了端口和主机地址,表明要发送数据,否则就是接收数据。
    细节2:DatagramSocket 创建的端口号,是每个UDP传输方自己准备接收数据的端口,所以每个UDP传输方都应该先占用一个DatagramSocket 类的socket 对象哦,就像一个门,打开一个货运门
编程样例
P678~P683