JAVASE--GUI图形用户界面、网络编程

一、GUI图形用户界面

Java在Java.awt和javax.swing包中为GUI提供了相应的对象,Java.awt需要调用本地系统方法实现功能,属于重量级控件,Java.swing是在awt的基础上建立的一套图形界面系统,完全由Java实现,其增强了移植性属于轻量级控件。

JAVASE--GUI图形用户界面、网络编程_第1张图片

Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

布局管理器:

JAVASE--GUI图形用户界面、网络编程_第2张图片

事件监听机制流程图

JAVASE--GUI图形用户界面、网络编程_第3张图片

l  确定事件源(容器或组件)

l  通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。

l  该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。

l  一般用匿名内部类来表示。

l  在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。

l  事件触发后会把事件打包成对象传递给该变量。(其中包括事件源对象。通过getSource()或者,getComponent()获取。)

二、 网络编程

网络模型:OSI参考模型、TCP/IP参考模型;网络通讯要素:IP地址、端口号、传输协议;

JAVASE--GUI图形用户界面、网络编程_第4张图片

JAVASE--GUI图形用户界面、网络编程_第5张图片

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();

你可能感兴趣的:(JavaSE)