网络编程三要素:
- Ip地址: 每个设备在网络中唯一标识
ipconfig 可以查看本机ip地址
ping 测试连接
IPV4 4个字节,0~255之间 Ipv6 每组4个16进制数
> 两个特殊的ip地址:
127.0.0.1 本地回路地址 代表本机 localhost
255.255.255.255 广播地址
- 端口号:
给不同的网络程序设置了一个不同的标识 是逻辑端口 不是网线的逻辑端口 端口号由0~65535数字组成 0~1024(被系统保留)
常见端口号: mysql 3306 oracle 1521 web 80 tomcat 8080
2425 http://localhost:8080/项目名/应用java
- 传输协议 是定义的一组通信规则 ‘
通用的网络协议Tcp/IP 包括局域网和广域网
Socket套接字
网络上具有唯一标识的ip地址和端口号的组合 用来唯一标识某个应用程序
网络通信就是Socket之间的通信,数据在两个Socket之间,听过IO流进行传输 InetAddress类 此类表示互联网协议
(IP) 地址。
方法
String getHostAddress()
返回 IP 地址字符串(以文本表现形式)。 static InetAddress
getByName(String host)
在给定主机名的情况下确定主机的 IP 地址。UnknowHostException
异常
static InetAddress getLocalHost()
返回本地主机。- UDP: 用户数据报协议
特点:面向无连接 数据不安全 速度快 不区分客户端和服务端 发送的数据大小有限制 一次不能超过64K 例如:对讲机 没有交互
DatagramSocket 类 此类表示用来发送和接收数据报包的套接字
构造方法: 无参构造
DatagramSocket()
构造数据报套接字并将其绑定到本地主机上任何可用的端口。
有参构造:DatagramSocket(int port)
创建数据报套接字并将其绑定到本地主机上的指定端口。
DatagramPacket 此类表示数据报包。
- 构造方法:
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
DatagramPacket(byte[] buf, int length)
构造DatagramPacket,用来接收长度为 length 的数据包
- 常用方法:
void send(DatagramPacket p)
从此套接字发送数据报包
void receive(DatagramPacket p)
从此套接字接收数据报包。
byte[] getData()
返回数据缓冲区。
void setLength(int length)
为此包设置长度
InetAddress getAddress()
返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。
TCP:传输控制协议
- 特点:
面向连接(三次握手): 客户端向服务端发送请求 服务端响应请求 客户端向服务端发送数据 数据安全 速度略慢
- 划分:分为客户端和服务端:
Socket(客户端)
InputStream getInputStream()
返回此套接字的输入流。
OutputStream getOutputStream()
返回此套接字的输出流。
InetAddress getInetAddress()
返回套接字连接的地址。ServerSocket(服务端)
此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。
Socket accept()
侦听并接受到此套接字的连接。
客户端的角度:客户端向服务端发送数据是流的输出;服务端向客户端发送数据 是流的输入