网络编程
网络通讯要素
- IP地址(InetAddress)
- 网络中设备的标识
- 不易记忆,可用主机名
- 本地回还地址:127.0.0.1 主机名:localhost
- InetAddress 类常用方法:
- static InetAddress getLocalHost() :返回本地主机IP地址和名称
- static InetAddress getByName(String host) :返回指定主机的IP地址和名称
- String getHostName() : 返回IP地址的主机名
- String getHostAddress() :返回IP地址
- 端口号
- 用于标识进程的逻辑地址,不同进程的标识
- 有效端口:0~65535,其中0~1024系统使用或保留端口。
- 传输协议
- 通讯规则
- 常用协议有:TCP UDP
- UDP(面向无连接)
- 将数据及源和目的封装在数据包中,不需要建立连接
- 每个数据包的大小限制在64K以内
- 因无连接,是不可靠协议
- 不需要建立连接,速度快
- TCP(面向连接)
- 建立连接,形成传输数据的通道
- 在连接中进行大数据量传输
- 通过三次握手完成连接,是可靠协议
- 必须建立连接,效率会稍低
Socket
Socket就是为网络服务提供的一种机制
通信的两端都有Socket
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输
UDP传输
- 通过DatagramSocket建立发送端和接收端。
- 通过DatagramPacket 建立数据包
- 调用Socket的发送接收方法。
- 关闭Socket
- 发送端与接收端是两个独立的运行程序。
- DatagramSocket
- 此类用来表示接收和发送数据报包的套接字。
- 构造方法:
- DatagramSocket(): 构造数据报套接字并将其绑定到本地主机上任何可用的端口。
- DatagramSocket(int port): 创建数据报套接字并将其绑定到本地主机上的指定端口。
- 方法:
- void receive(DatagramPacket p): 从此套接字接收数据报包。此方法是阻塞式方法。
- void send(DatagramPacket p): 从此套接字发送数据报包。
- DatagramPacket
- 此类表示数据报包。
- 数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。
- 构造方法:
- DatagramPacket(byte[] buf,int length):
- 构造
DatagramPacket
,用来接收长度为length
的数据包。 - DatagramPacket
(byte[] buf, int length, InetAddress address, int port):
- 构造数据报包,用来将长度为
length
的包发送到指定主机上的指定端口号。
- 方法:
- InetAddress getAddress() : 返回指定机器的IP地址
- byte[] getData() :返回数据缓冲区
- int getLength() : 返回将要发送或接收到的数据的长度
- int getPort() : 返回指定机器的端口号
TCP传输
- 通过Socekt和ServerSocket建立客户端和服务器端
- 建立连接后,通过Socket中的IO流进行数据的传输。
- 关闭Socket
- 客户端与服务端是两个独立的应用程序。
- Socket
- 此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
- 构造方法:
- Socket() : 通过系统默认类型的 SocketImpl 创建未连接套接字
- Socket(InetAddress address , int port) : 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
- Socket(String host , int port) : 创建一个流套接字并将其连接到指定主机上的指定端口号。
- 方法:
- void connect(SocketAddress endpoint) : 将此套接字连接到服务器。
- InputStream getInputStream() : 返回此套接字的输入流。
- OutputStream getOutputStream() : 返回此套接字的输出流。
- ServeSocket
- 此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结
- 构造方法:
-
- ServerSocket(): 创建非绑定服务器套接字。
- ServerSocket(int port): 创建绑定到特定端口的服务器套接字
- 方法:
- accept():侦听并接受到此套接字的连接。
URL
- 类
URL
代表一个统一资源定位符,它是指向互联网“资源”的指针。 - 资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
- 方法:
- String getProtocol(): 获取此
URL
的协议名称。 - String getHost(): 获取 此
URL
的 主机名(如果适用)。 - String getFile(): 获取 此
URL
的 文件名。 - String getPath(): 获取 此
URL
的 路径部分。 - int getPort(): 获取此URL的端口号。
- URLConnection openConnection(): 返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。
- String getProtocol(): 获取此