Java基础入学考blog-9

本文详细解析了网络编程的基础知识,包括Mac地址、端口、协议等核心概念,并介绍了TCP编程的实现步骤;同时,文章还阐述了布局管理器(如CardLayout、GridBagLayout)在图形界面设计中的应用,以及菜单项(JMenuBar、JMenu、JMenuItem)的创建与配置。此外,文章还简要概述了AWT事件模型的工作原理及其在组件交互中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础复习-第9天

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------



网络编程:

         网络基础知识

                  Mac地址:每个网卡专用地址,也是唯一的。

                  端(port):应用程序(进程)的标识(网络通信程序)

                           OS中可以有65536(2^16)个端口,进程通过端口交换数据。

                           端口是一种抽象的软件结构,与协议相关:TCP的23端口和UDT的23端口为两个不同的概念。

                           端口应该用1024以上的端口,以下的端口都已经设定功能。

                  协议:为了进行网络中的数据交换而建立的约定,协议是为了保证通信的安全,不同层的协议是完全不同的。

                           TCP协议:传输层的协议,重发一切错误的信息

                           IP协议:保证地址和主机一一对应(ip地址+网卡地址)

                          

         TCP编程:

                  TCP是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。

                           1) 服务器分配一个端口号,服务器使用accept()方法等待客户端的信号,信号一到打开socket连接,从socket中取得OutputStream和InputStream。

                       2) 客户端提供主机地址和端口号使用socket端口建立连接,得到OutputStream和InputStream。

 

                  Server端编码的步骤:

                           1、new ServerSocket 打开端口

                           2、调ServerSocket的accept()等待客户连接,当连接成功返回交互的Socket。

                           3、调用Socket.getInputStream,getOutputStream获得服务器端的IO流

                           4、用处理流封装后与客户端交互,记住你读我写,一读一写。

                           5、关闭单一客户端调用Socket的close(),关闭服务器调ServerSocket的close();

 

                  Socket端编码步骤:

                           1、new Socket(Server ip,Serverport)试图连接,如成功才有对象

                           2、调用Socket.getInputStream,getOutputStream获得服务器端的IO流

                           3、用处理流封装后与客户端交互,记住你读我写,一读一写。

                           4、关闭,只有Socket的close()方法。


图形界面:

         布局管理器:

                  CardLayout:卡片布局,面板重叠放置,只能看到一个,最先添加的会被显示出来,可以进行翻动

                           两种构造方法:

                                    CardLayout()

                                         创建一个间隙大小为 0 的新卡片布局。

                                    CardLayout(int hgap, int vgap)

                                         创建一个具有指定的水平和垂直间隙的新卡片布局。

                       常用的方法:

                                    previous(Container parent)

                                         翻转到指定容器的前一张卡片。

                                show(Containerparent, String name)

                                          翻转到已添加到此布局的具有指定 name 的组件

                                next(Containerparent)

                                         翻转到指定容器的下一张卡片。

                                first(Containerparent)

                                         翻转到容器的第一张卡片。        

                                last(Containerparent)

                                         翻转到容器的最后一张卡片。

                                        

              GridBagLayout:增强版的网格布局,组件可以跨行跨列的进行布局。

                       构造方法:

                                GridBagLayout()

                                         创建网格包布局管理器。

                       注意:

                                该布局管理器的具体实现需要借助GridBagConstraints类,利用GridBagConstraints类的属性对组件进行设置,具体内容查看API文档。

                               

         菜单项:

                  JMenuBar:菜单栏的实现,将JMenu对象添加到菜单栏以构造菜单

                           构造方法:

                                    JMenuBar()

                                         创建新的菜单栏。

                                        

                  JMenu:菜单的该实现是一个包含JMenuItem的弹出窗口

                           构造方法:

                                    JMenu(String s)

                                         构造一个新JMenu,用提供的字符串作为其文本。

                                        

                  JMenuItem:菜单中的项的实现,菜单项本质上是位于列表中的按钮

                           构造方法:

                                    JMenuItem(String text)

                                         创建带有指定文本的JMenuItem。

                               

AWT事件模型:

         事件模型的三要素:

                  事件源(Object):事件的产生者。

                  事件(EventObject):描述发生了什么事情。 

                  事件监听(EventListener):事件的处理者

                  关系:

                           事件只与事件源有关,与事件监听无关

                           一个事件源可以注册多个事件监听。

                           一个事件监听器可以在多个事件源中注册。

                           一个事件源可以就同一类事件注册多个事件监听。

        

         事件处理机制:委派式的处理机制(是一种松耦合)

                  组件自身会产生事件对象,但本身不一定负责处理,而是交给一个监听者去处理

                 

         实现监听的步骤:

                  a. 实现监听接口implements XxxxListener

                  b. 重写方法actionPerformed(ActionEvent e)

                  c. 注册监听addXxxxListener(ActionListener l)

                 

         适配器:一个重写了所有接口中方法的类

                  在java.awt.event包中,会有一些适配器,也就是把相应的XxxxListener,换成XxxxAdapter就是适配器。

                  在AWT中经常用匿名内部类来继承适配器做监听


----------- android培训java培训、java学习型技术博客、期待与您交流! ------------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值