网络编程&正则表达式

网络编程

>软件架构

C/S架构: 客户端和服务器架构

B/S架构: 浏览器和服务器架构

>网络通信要素

要素①: IP地址和域名

要素②: 端口号

要素③: 网络通信协议

>TCP协议与UDP协议

TCP 协议:
TCP 协议进行通信的两个应用进程:客户端、服务端。
使用 TCP 协议前,须先 建立 TCP 连接 ,形成基于字节流的传输数据通道
传输前,采用“三次握手”方式,点对点通信,是 可靠的
TCP 协议使用 重发机制 ,当一个通信实体发送一个消息给另一个通信实体
后,需要收到另一个通信实体确认信息,如果没有收到另一个通信实体确
认信息,则会再次重复刚才发送的消息。
在连接中可进行 大数据量的传输
传输完毕,需 释放已建立的连接,效率低
UDP 协议:
UDP 协议进行通信的两个应用进程:发送端、接收端。
将数据、源、目的封装成数据包(传输的基本单位), 不需要建立连接
发送不管对方是否准备好,接收方收到也不确认,不能保证数据的完整性,故是 不可靠的
每个数据报的大小限制在 64K
发送数据结束时 无需释放资源,开销小,通信效率高
适用场景:音频、视频和普通数据的传输。例如视频会议 TCP 生活案例:打电话
UDP 生活案例:发送短信、发电报

>网络变成API

1)InetAddress类

InetAddress 类主要表示 IP 地址,两个子类:Inet4Address、Inet6Address。
InetAddress 类没有提供公共的构造器,而是提供了如下几个静态方法来获取 InetAddress 实例
• public static InetAddress getLocalHost()
• public static InetAddress getByName(String host)
• public static InetAddress getByAddress(byte[] addr) InetAddress 提供了如下几个常用的方法
• public String getHostAddress() :返回 IP 地址字符串(以文本表现形式)
• public String getHostName() :获取此 IP 地址的主机名
• public boolean isReachable(itimeout):测试是否可以达到该地址

2)Socket类

--DatagramSocket类
• public DatagramSocket(int port)创建数据报套接字并将其绑定到本地主机上的指定端口。套接字将被绑定到通配符地址,IP 地址由内核来选择。
• public DatagramSocket(int port,InetAddress laddr)创建数据报套接字,将其绑定到指定的本地地址。本地端口必须在 0 到 65535 之间(包括两者)。如果 IP 地址为 0.0.0.0,套接字将被绑定到通配符地址,IP 地址由内核选择。
• public void close()关闭此数据报套接字。
• public void send(DatagramPacket p)从此套接字发送数据报包。DatagramPacket 包含的信息指示:将要发送的数据、其长度、远程主机的 IP 地址和远程主机的端口号。
• public void receive(DatagramPacket p)从此套接字接收数据报包。当此方法返回时,DatagramPacket 的缓冲区填充了接收的数据。数据报包也包含发送方的 IP 地址和
发送方机器上的端口号。 此方法在接收到数据报前一直阻塞。数据报包对象的length 字段包含所接收信息的长度。如果信息比包的长度长,该信息将被截短。
• public InetAddress getLocalAddress()获取套接字绑定的本地地址。
• public int getLocalPort()返回此套接字绑定的本地主机上的端口号。
• public InetAddress getInetAddress()返回此套接字连接的地址。如果套接字未连接, 则返回 null。
• public int getPort()返回此套接字的端口。如果套接字未连接,则返回 -1。
--DataPacket类
• public DatagramPacket(byte[] buf,int length)构造 DatagramPacket,用来接收长度为
length 的数据包。 length 参数必须小于等于 buf.length。
• public DatagramPacket(byte[] buf,int length,InetAddress address,int port)构造数据报
包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小
于等于 buf.length。
• public InetAddress getAddress()返回某台机器的 IP 地址,此数据报将要发往该机器
或者是从该机器接收到的。
• public int getPort()返回某台远程主机的端口号,此数据报将要发往该主机或者是从该
主机接收到的。
public byte[] getData() 返回数据缓冲区。接收到的或将要发送的数据从缓冲区
中的偏移量 offset 处开始,持续 length 长度。
public int getLength() 返回将要发送或接收到的数据的长度。

正则表达式

关于常用的正则语法

[abc]: 可以匹配abc中的任意一个字符

[^abc]: 可以匹配非abc中的任意一个字符

[a-z]: 表示小写字母中的任意一个

[0-9]: 表示0~9中的任意一个数字

[0-9a-zA-Z]: 表示0~9中的任意一个数字或任意一个字母

[^0-9a-zA-Z]:  表示非0~9中的任意一个数字或任意一个字母

.: 表示任意单个字符

\d: 表示数字[0~9]

\D: 表示非数字[0~9]

\s: 表示由空字符组成

\S: 表示非空

\w: 表示字母数字下划线 [0-9a-zA-Z_]

\W: 表示非字母数字下划线

?: 表示出现0次或1次

+: 表示出现1次或多次

*: 表示出现任意次

{n}: 表示n次

{n,}: 表示n次及n次以上

{n,m}: 表示n到m次

(): 表示一个整体

|: 表示或

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值