IP:定义网络上的节点(电脑,手机,pad,路由器...)..区分节点
* 分类:
* IPV4 : 32位
* IPV6 : 128位
*
* 特点的IP:
* 局域网内部IP:192.168.0.0~192.168.255.255
* 127.0.0.1 : 默认本地IP
* localhost : 本地域名
* DNS服务器:解析IP和域名之间的关系
*
* InetAddress 此类表示互联网协议 (IP) 地址。
* static InetAddress getLocalHost() 返回本地主机。
* static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。
*
* String getHostName() 获取此 IP 地址的主机名。
* String getHostAddress() 返回 IP 地址字符串(以文本表现形式)。
*
* 端口: InetSocketAddress
端口port:区分软件...
* 2个字节: 0~65535
* 注意:
* 1.同一的协议下端口号不能冲突
* 2.自定义设置端口号建议设置越大越好,一般8000网上
* 预留端口号:
* 80: http
* 8080:tomcat
* 1521:Oracle
* 3306:Mysql
*
* InetSocketAddress 此类实现 IP 套接字地址(IP 地址 + 端口号)。
* InetSocketAddress(String hostname, int port) 根据IP|域名+端口号构建
InetAddress getAddress() 获取 InetAddress。
String getHostName() 获取 hostname。
int getPort() 获取端口号。
URL:统一资源定位符
* 互联网三大基石: http html url
* url的构成:
* 协议
* 域名
* 端口
* 资源
* 数据
* "http://www.baidu.com:80/index.html?name=zhangsan&pwd=123#a"
*
* URL(String spec) 构建url
Socket套接字: 传输层为应用层开辟的小口子,通过 Socket进行发送和接收数据
* 不同协议下的socket实现不同
* 面向Socket编程
*
* tcp: 面向连接 打电话 安全 开销大 基于3次握手 大小没有限制 . 基于流传输
* udp: 非面向连接 写信|发短信 只管写只管发 开销小,效率高 不安全 大小有限制 一般不超过60k , 基于字节数组传输
*
基于udp的socket编程:
* 发送端
* 接收端
* DatagramSocket 此类表示用来发送和接收数据报包的套接字。(定义发送端|接收端)
* DatagramPacket数据报包(数据打包)
*
udp实现发送端的基本流程: 发送端和服务端是平等的
* 1.定义发送端 DatagramSocket(端口号) 指定发送端的端口号
* 2.准备数据
* 3.对数据打包 DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。
4.发送void send(DatagramPacket p)
5.关闭 void close() 关闭此数据报套接字。
接收端基本流程:
* 1.定义接收端 DatagramSocket(int port)
* 2.准备字节数组
* 3.准备包裹用来接收数据 DatagramPacket(byte[] buf, int length)
* 4.接收
5.从包裹中获取数据
* byte[] getData()
返回数据缓冲区。
int getLength()
返回将要发送或接收到的数据的长度。
6.关闭
Socket 此类实现客户端套接字
* 客户端
* 1.定义客户端 Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
* 2.IO操作
* 输出流OutputStream getOutputStream() 返回此套接字的输出流。
* 3.刷出
* 4.关闭
ServerSocket 此类实现服务器套接字。
* TCP服务端
* 1.定义服务端 ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
* 2.阻塞式监听 一个客户端连接成功,就是一个socket
* 3.io操作
* 4.关闭
TCP实现文件上传客户端 :
* 1.定义客户端 Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
* 2.IO操作 先从文件中读入数据-->写出数据
* new FileInputStream("");
* 输出流OutputStream getOutputStream() 返回此套接字的输出流。
* 3.刷出
* 4.关闭
TCP实现文件上传服务端:
* 1.定义服务端 ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
* 2.阻塞式监听 一个客户端连接成功,就是一个socket
* 3.io操作 :从客户端读入数据 --->文件输出流 写出文件中
* 4.刷出
* 5.关闭