一、GUI图形用户界面
Java在Java.awt和javax.swing包中为GUI提供了相应的对象,Java.awt需要调用本地系统方法实现功能,属于重量级控件,Java.swing是在awt的基础上建立的一套图形界面系统,完全由Java实现,其增强了移植性属于轻量级控件。
Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
布局管理器:
事件监听机制流程图
l 确定事件源(容器或组件)
l 通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。
l 该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。
l 一般用匿名内部类来表示。
l 在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
l 事件触发后会把事件打包成对象传递给该变量。(其中包括事件源对象。通过getSource()或者,getComponent()获取。)
二、 网络编程
网络模型:OSI参考模型、TCP/IP参考模型;网络通讯要素:IP地址、端口号、传输协议;
Java中提供了Socket对象的网络服务机制,通信的两端都有Socket对象,网络通信数据在两个Socket间通过I/O传输。
利用UDP传输的程序实现:使用DatagramSocket创建用来发送和接收数据报包的套接字,使用DatagramPacket创建数据包,在发送端的数据包对象中明确目的地IP及端口,在接收端要指定监听的端口,调用DatagramSocket.send()方法发送数据,DatagramSocket.Socket()关闭数据传输;
发送端:
DatagramSocketds = new DatagramSocket();
byte[]by = “hello,udp”.getBytes();
DatagramPacketdp = new DatagramPacket(by,0,by.length, InetAddress.getByName(“127.0.0.1”),10000);
ds.send(dp);
ds.close();
接收端:
DatagramSocketds = new DatagramSocket(10000);
byte[]by = new byte[1024];
DatagramPacketdp = new DatagramPacket(by,by.length);
ds.receive(dp);
Stringstr = new String(dp.getData(),0,dp.getLength());
System.out.println(str+"--"+dp.getAddress());
ds.close();
利用TCP传输的程序实现:
客户端:客户端需要明确服务器的ip地址以及端口,这样才可以去试着建立连接,如果连接失败,会出现异常;连接成功,说明客户端与服务端建立了通道,那么通过IO流就可以进行数据的传输,而Socket对象已经提供了输入流和输出流对象,通过getInputStream(),getOutputStream()获取即可;与服务端通讯结束后,关闭Socket。
Sockets = new Socket(“192.168.1.1”,9999);
OutputStreamout = s.getOutputStream();
out.write(“hello”.getBytes());
s.close();
服务端:服务端需要明确它要处理的数据是从哪个端口进入的,当有客户端访问时,要明确是哪个客户端,可通过accept()获取已连接的客户端对象,并通过该对象与客户端通过IO流进行数据传输,当该客户端访问结束关闭该客户端。
ServerSocketss = new ServerSocket(9999);
Sockets = ss.accept ();
InputStreamin = s.getInputStream();
byte[]buf = new byte[1024];
intnum = in.read(buf);
Stringstr = new String(buf,0,num);
System.out.println(s.getInetAddress().toString()+”:”+str);
s.close();
ss.close();