1,GUI:Graphical User Interface(图形用户接口)(提供的对象都存在java.awt包和javax.swing包)
2,java.awt:抽象窗口工具包,需要调用本地系统方法实现功能属重量级控件
java.swing:在awt包基础上,建立了图形界面系统,提供了更多的组件,完全由java实现,属轻量级控件
2,布局管理器
(1)FlowLayout(流式):从左到右,Panel默认
(2)BorderLayout(边界):东西南北中,Frame默认
(3)GirdLayout(网格):规则的矩阵
(4)GirdBagLayout(网格包):非规则的矩阵
(5)CardLayout(卡片):选项卡
3,Component (创建图形化界面)
(1)创建Frame窗体:Frame f = new Frame(“名称”)
(2)对窗体进行设置:
setBound(长,宽,左距离,上距离)= {大小(setSize(长,宽)),位置(setLocation(左距离,上距离))},
布局(setLayout(new 布局()))
(3)定义组件Button b = new Button(“内容”)
(4)将组件通过窗体的add方法添加到窗体(add(b))
(5)让窗体显示:setVisible(true)
4,事件监听机制的特点:
(1)事件源;awt包或swing包中的图形界面组件
(2)事件:每一个事件源都有自己特有的对应事件和共性事件
(3)监听器:将可以触发某一个事件的动作(不止一个)都封装到监听器中
(4)对事件处理
5,添加监听器(导入两个包,java.awt.*,java.awt.event.*),addWindowListener(参数),
创建一个类继承WindowAdapter,覆盖需要的方法
6,网络编程
OSI:应用层-表示层-会话层-传输层-网络层-数据链路层-物理层
TCP/IP:应用层-传输层-网际层-主机至网络层
(1)IP地址:网络中设备的标识,本地回环地址,127.0.0.1;主机名,localhost;
(2)端口:标识进程的逻辑地址,有效端口0-65535;
(3)传输协议;
7,InetAddress(IP地址):
getByName(String host)确定主机名称的IP地址;
getByAddress(String host,byte[] addr)根据提供的主机名和IP地址创建InetAddress;
getHostAddress()返回文本显示中的IP地址字符串;
getHostName()获取此IP地址的主机名;
8,协议:
UDP:
1,将数据及源和目的封装成数据包中,不需要建立连接;
2,每个数据包的大小限制在64k内;
3,因无连接,是不可靠协议;
4,不需要建立连接,速度快
TCP:
1,建立连接,形成传输数据的通道;
2,在连接中进行大数据量传输;
3,通过三次握手完成连接,是可靠协议;
4,必须建立连接,效率稍低;
9,Socket(两台机器之间通讯的端点)
UDP:
DatagramSocket(既可接收也可发送)
发送:
(1)建立UDP Socket服务
DatagramSocket ds = new DatagramSocket();
(2)提供数据,并将数据封装到数据包中DatagramPacket
DatagramPacket dp = new DatagramPacket (byte[] buf,int length,InetAddress address,int port)
(3)通过Socket服务的发送功能,将包发出去
ds.send(dp)
(4)关闭资源
ds.close()
接收:
(1)定义Socket服务
DatagramSocket ds = new DatagramSocket();
(2)定义一个数据包,用于存储接收到的数据
DatagramPacket dp = new DatagramPacket(buf,buf.length)
(3)通过receive方法将收到的数据存入包中
ds. receive(dp)
(4)通过数据包获取数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort()
(5)关闭资源
TCP:
客户端 Socket ;服务端 ServerSocket
客户端:Socket建立对象时必须连接指定主机
(1)创建Socket服务,并指定要连接的主机和端口
Socket s = new Socket (“IP地址”,端口);
(2)为了发送数据,应该获取Socket流中的输出流
OutputStream out = s.getOutputStream();
(3)调用输出流的write方法
out.write(内容);
服务端:
(1)建立服务端的Socket服务,ServerSocket(),并监听一个端口
ServerSocket ss = new ServerSocket(端口)
(2)获取连接过来的客户端对象,通过ServerSocket的accept方法,没有连接就会等,此方法是阻塞的;
Socket s = ss.accept();
(3)如果客户端发来数据,那么服务端要使用对象的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据
InputStream in = s.getInputStream();