黑马程序员_GUI和网络编程知及正则知识要点 Gui网络编程sockettcp/ipudp
---------------------- android培训 、java培训 、期待与您交流! ----------------------
GUI
Graphical User Interface( 图形用户接口 )
java.Awt:Abstract Window ToolKit( 抽象窗口工具包 ), 要调用本地系统方法实现功能 , 和系统依赖性强
javax.Swing: 在 AWT 基础上建立的 , 其中提供了更多组件 , 而且完全由 Java 实现 , 增强移植性 , 属轻量级控件 .
创建图形化界面 :
1. 创建 frame 窗体 .
2. 对窗体进行基本设置
3. 定义组件
4. 将组件通过窗体 add 方法添加到窗体中
5. 让窗体显示 . 通过 setVisable
事件监听机制组成
事件源 : 就是 awt 包或者 swing 包中那些图形界面组件 .
事件 , 每一个事件源都有自己特有的对应事件和共性事件
监听器 , 将可以触发某一事件的一些动作都已经封装到了监听器中 .
事件处理 : 我们要做的就是对产生的动作进行处理 .
生成 jar 包双击执行 -cvfm my.jar 1.txt mymenu
my.jar 是要生成的 jar 包文件名称 .
1. 1.txt 是加载配置信息 , 里边固定格式 MAIN-Class: mymenu.MyMenuTest
在 : 后面要加一个空格 , 在文件最后要加一个回车 .
2. mymenu 是 .class 文件存放的文件夹 .
网络编程 :
网络模型
OSI 参考模型
TCP/IP 参考模型
网络通讯要素
IP 地址
端口号
传输协议
InetAddress ip=InetAddress.getByname(“127.0.0.1”);
ip.getHostAddress(); ip.getHostName();
UDP: 将数据源和目的都封装在包里 , 不需要建立连接 , 发送速度快 , 是不可靠协议 , 每个数据包的大小限制在 64K 内 .
TCP: 需要建立连接形成传输通道 , 发送效率会稍低 , 要三次握手建立连接是可靠协议 . 在连接中可以进行大数据量传输 .
Socket 就是为网络服务提供的一种机制 .
通信的两端都有 Socket
网络通信其实就是 Socket 间的通信 .
数据在两个 Socket 间通过 IO 传输
DatagramPacket 此类表示数据报包。
数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。
UDP 发送 :
思路 :
1. 建立 udpsocket 服务
2. 提供数据 , 并将数据封装到数据包中 .
3. 通过 socket 服务的发送功能 , 将数据包发出去
4. 关闭资源 .
UDP 接收思路 :
1. 定义 udpsocket 服务
2. 定义一个数据包 , 因为要存储接收到的字节数据 , 因为数据包对象中有更多功能可以提取字节数据中的不同数据信息 .
3. 通过 socket 服务的 receive 方法将收到的数据存入已经定义好的数据包中 .
4. 通过数据包对象的特有功能 , 将这些不同的数据取出 , 打印在控制台上 .
5. 关闭资源 .
接收数据用的阻塞式方法
广播地址 .255 代表这个段里边的广播地址 .
TCP 传输
Socket 和 ServerSocket
建立客户端和服务端
建立连接后 , 通过 Socket 中的 IO 流进行数据传输
关闭 socket
TCP 分客户端和服务端
客户端 : 该对象建立时就可以去连接指定的主机 . 因为 tcp 是面向连接的 , 所以在建立 socket 服务时 , 就要有服务端存在并连接成功 , 形成通路后在该通道进行数据的传输 .
思路 :
1. 建立客户端 socket 服务 , 并指定要连接的主机和端口 .
2. 为了发送数据 , 应该获取 socket 流中的输出流 .
服务端 :
1. 建立服务端 ServerSocket(); 并监听一个端口
2. 获取连接过来的客户端对象 . 通过 accept 方法来完成 .
3. 客户端如果发过来数据 , 那么服务端要使用对应的客户端对象 , 并获取到该客户端对象读取流来读取发过来的数据 .
客户端和服务端的流是反向对立的 .
TCP 传输协议结束要结束通讯可以禁用流 , 也就是等于加入结束标记
禁用流的两种方式 :shutdownInput(); 和 shutdownOutput();
分析客户端和服务端得出服务端要开启多线程运行 , 让每一个连接的客户端都有独立的线程
可以把和客户端交互的代码封装在一个类中 , 此类实现了 Runnable 接口 . 要通讯的过程中要考虑各种实际情况在线程中做出相应的处理 .
正则表达式 : 符合一定规则的表达式 .
作用 : 用于专门操作字符串 .
特点 : 用一些特定的符号来表示一些代码操作 . 这样就简化了书写 .
好处 : 可以简化对字符串的复杂操作 .
弊端 : 符号定义越多 , 正则越长 , 阅读性越差 .
具体操作功能 .
1. 匹配 : String matches 方法 .
2. 切割 : String split 组的概念 .(.)\\1+ 用 () 来表示 . 遍号默认从 1 开始 , 要想使用以前的通过 \n 来完成 . 区分组看左括号有几个就是几组 , 最左括号是第一组 , 依次推 .
3. 替换 :String replaceAll $1 拿前一个符号的第一组 .
4. 获取 : 将字符串中的符合规则的子串取出 .
操作步骤 :
1. 将正则表达式封装成对象 .
2. 让正则对象和要操作的字符串关联 .
3. 关联后 , 获取正则匹配引擎 .
4. 通过引擎对符合规则的子串进行操作 , 比如取出 .
---------------------- android培训 、java培训 、期待与您交流! ----------------------