网络编程
网络编程
IP
定义节点,区分节点(互联网中的电子设备都可以通过IP定义)
分类
IPV4 ->4个字节->32位 IPV6 ->128位
常识
192.168.0.0~192.168.255.255 非注册IP,供组织内部使用的IP
127.0.0.1 ->本地IP
localhost ->本地域名
IP->域名 : DNS服务器
端口
区分软件
port
常识
0~65535表示端口号 2个字节
统一协议下端口号不能冲突
8000以下端口不建议使用,预留端口号
常见端口号
80 : http
8080 : tomcat
1521 : Oracle
3306 : Mysql
InetSocketAddress
此类实现IP套接字地址(IP地址+端口号)
URL
统一资源定位符,向万维网上的“资源”的指针
互联网的三大基石
URL
HTML
HTTP
组成
1.协议 http
getProtocol()
2.域名 www.baidu.com
getHost()
3.端口 80
getPort()
4.资源 index.html
getPath()
5.数据 username=zhangsan&password=123
getQuery()
6.锚点 #a
getRef()
协议
标准,规范,规则,合同
传输层协议
互联网中传输数据需要满足传输层协议
UDP
相当于写信, 只管写只管邮,协议简单,效率高 不安全 大小限制
TCP
相当于打电话, 安全,没有大小限制
java.net网络包
InetAddress
表示IP地址
网页编程与网络编程的区别
网页编程
注重的是上层的应用
网络编程
注重是底层数据的传输
Socket
套接字
是传输层为应用层开辟的一个小口子
同协议下Socket实现不同
面向Socket编程
UDP
相当于写信|邮寄包裹 非面向连接的 只管写只管邮 协议简单,开销小,效率高 不安全 存在大小限制,一般不超过60k
DatagramPacket 数据报包
DatagramSocket 此类表示用于发送和接收数据报包的套接字。
两端是平等,数据基于包裹,基于字节数组
UDP协议实现基础的发送端
1.定义我是发送端 DatagramSocket(int port) 构造一个数据报套接字并将其绑定到本地主机上的指定端口。
2.准备数据
3.数据打包
4.发送端发送包裹 void send(DatagramPacket p) 从此套接字发送数据报包。
5.关闭
UDP协议实现基础的接收端
1.定义我是接收端
2.准备包裹用来接收数据
3.接收端接收数据
4.处理数据
5.关闭
TCP
相当于打电话 面向连接 基于3次握手 安全 没有大小限制
协议下传输数据
客户端
服务器
基于IO
协议实现客户端
1.构建我是客户端 Socket(String host, int port) IP+端口号指要连接的服务器的IP与端口
2.基于IO操作
1)获取输出流
2)写出
3)刷出
4)关闭
3.关闭
协议实现服务端
1.构建我是服务端 ServerSocket(int port)
2.阻塞式监听 Socket accept() 侦听对此套接字的连接并接受它。
3.IO操作
1)获取输入流
2)读入数据
3)处理数据
4)关闭
4.关闭
单向
登录客户端
1.构建我是客户端
2.键盘接收用户名与密码
3.基于IO操作向服务器发送数据
1)获取输出流
2)写出
3)刷出
4)关闭
3.关闭
实现服务端
1.构建我是服务端
2.阻塞式监听
3.IO操作接收客户端数据
1)获取输入流
2)读入数据
3)处理数据
4)关闭
4.关闭
双向
1.构建我是客户端
2.键盘接收用户名与密码
3.基于IO操作向服务器发送数据
4.基于IO操作接收服务器响应的结果
5.处理结果
6.关闭