Java基础笔记12-GUI网络编程传输协议(TCPUDP)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

day2222-01GUI(图形用户界面):GraphicalUserInterface(图形用户接口)用图形的方式,来显示计算机操作的界面,这样更方便直观。CLI:CommandlineUserInterface(命令用户接口)就是常见的DOS命令操作。需要记忆一些常见的命令,操作不直观。Java为GUI提供的对象都存在java.awt和javax.swing两个包中。java.Awt:AbstractWindowToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属重量级控件。和系统的依赖性相对较强javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。开发一般用Swing。eclipse使用的是SW,基于Awt。继承关系图:22-02AWT布局管理器:容器中的组件的排放方式,就是布局。常见的布局管理器:FlowLayout(流式布局管理器):1.从左到右的顺序排列2.Panel默认的布局管理器。BorderLayout(边界布局管理器):1.东,南,西,北,中2.Frame默认的布局管理器。GridLayout(网格布局管理器):规则的矩阵CardLayout(卡片布局管理器):选项卡GridBagLayout(网格包布局管理器):非规则的矩阵22-03AwtDemo图形化界面是由另外的线程组成的。Frame默认边界式布局,如果不指定位置,就会全部居中填充Framef=newFrame(“myawt”);//主题myawt。默认是隐式化窗口f.setSize(500,100);//设置窗口长和宽。f.setLocation(300,200)//设置窗口出现的位置.x=定点距离左边的距离,y=定点距离上面的距离。f.setLayout(newFlowLayout());//设置布局管理,使按钮不再填充整个区域。创建图形化界面:Buttonb=newButton(“按钮”);//建立一个按钮。f.add(b);将按钮添加进窗口。f.setVisible(true);//设为可视化窗口。放在最后1.创建Frame窗体2.对窗体进行基本设置,如大小,位置,布局,颜色等3.定义组件4.将组件通过窗体的add方法添加到窗体中5.让窗体显示。通过setVisible(true)。22-04AwtDemo事件监听机制:事件源(组件)、事件(Event)、监听器(Listener)、事件处理(引发事件后处理方式)事件源:awt包或者Swing包中的那些图形界面组件。事件:每一个事件源都有自己特有的对应事件和共性事件。监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中。以上三者在Java中都已经定义好了。我们要做的事情就是对产生的动作进行处理。22-05AwtDemo添加窗体监听器:addWindowListener(WindowListenerl)导入两个包:java.awt.*和java.awt.event.*。WindowAdapter()是WindowListener的适配器f.addWindowListener(newWindowAdapter()//匿名内部类,适配器{//窗口打开,只是用一次,用于设置窗口一打开就执行的动作publicvoidwindowOpened(WindowEvente){System.out.println(开);}});22-06Component:setBounds(intx,inty,intwindth,intheight)//设置组件移动位置和组件大小,让按钮具备退出程序的功能:按钮就是事件源。那么该选择哪个监听器?想要知道哪个组件具备什么样的监听器,需要查看该组件对象的功能。通过查阅Button的描述,发现按钮支持一个特有的监听ActionListenerActionListener没有适配器,因为它只有一个方法,复写比较方便。注:一般的监听器都有适配器。ActionListeneractionPerformed(ActionEvente)按钮监听器的方法。22-07鼠标键盘事件:鼠标监听:Buttonbut=newButton(“按钮”);but.addMouseListener(newMouseAdapter()//添加鼠标监听器{privateintcount=0;publicvoidmouseEntered(MouseEvente){sop(“鼠标进入”+count++);}});按钮的鼠标监听比活动监听器先执行。22-08键盘监听:but.addKeyListener(newKeyAdapter(){publicvoidkeyPassed(KeyEvente){sop(e.getKeyChar()+”::”+e.getKeyCode())//返回按下的键和键对应的码。//返回描述keyCode的String。escape:27sop(KeyEvent.getKeyText(e.getKeyCode()))//处理:要求一按下esc键和ctrl键,就退出程序//InputEvent:KeyEvent,MouseEventif(e.isContralDown()&&e.getKeyCode()==KeyEvent.VK_ESCAPE)System.exit(0);}});添加一个文本框:TextFieldtf=newTextField(20)//20列的文本框。f.add(tf);tf.addKeyListener()22-09MyWindowDemo练习:Stringtext=tf.getText();//在控制台上获取TextField中的字符ta.setText(text);//获取控制台上的字符。ta:TextAreata.append()tf.setText(“”);清空文本框中的目录。22-10MyWindowDemoDialog:对话框一般依赖于窗体。newDialog(f,”提示信息”,true);//f:传入窗体,true:对话框弹出后,不能操作她所依赖的窗体。组件里面不能直接写文本。对话框里的文字需要通过Lable来添加。22-11做菜单效果:MenuBar:菜单栏MenuBarmb=newMenuBar();Menu:Menum=newMenu(“文件”);MenuItem:是Menu的父类。MenuItemmi=newMenuItem(“退出”);menu可以添加Menu和MenuItem。既可以添加父类,也可以添加自己。m.add(mi);窗口可以添加菜单栏:通过setMenuBar将菜单添加到窗体中。f.setMenuBar(mb);22-12菜单:打开:FileDialog(f,”我的打开”,FileDialog.LOAD)22-13菜单:保存:FileDialog(f,”我的保存”,FileDialog.SAVE)22-14能双击执行的jar包,但需要程序有图形化界面形式。如何给jar包添加自定义的配置信息:配置清单里已有的属性。建立一个文本文档:输入:Main-Class:mymenu.MyMenuTest回车//包名.类名,注:必须要回车,mymenu前必须要空一格DOS编译:jar-cvfmmy.jar1.txtmymenu//将包名为mymenu带着配置信息压缩。本地注册jar文件:工具--文件夹选项--文件类型--新建jar(有jar文件就不用新建了)--高级--更改图标--新建(操作:open--浏览(找到javaw.exe)--打开(路径-jar))--确定day23网络编程23-01网络通讯要素:•IP地址:分四段,每段是一个字节。IPV4,IPV6•端口号:0-65535。web:80Tomcat:8080•传输协议:国际组织通用协议:TCP/IP,UDP端口:逻辑端口。数字标识23-02如果没有配置地址,默认IP地址:127.0.0.1dos:ping127.0.0.1---测试网卡是否正常23-03网络模型:•OSI参考模型•TCP/IP参考模型数据封包---数据拆包。传输层最常见协议:TCP,UDP网际层最常见协议:IP应用层最常见协议:HTTP应用层基于传输层和网际层,目前是在传输层和网际层23-04java.net包IP地址:InetAddress•网络中设备的标识•不易记忆,可用主机名•本地回环地址:127.0.0.1主机名:localhost端口号•用于标识进程的逻辑地址,不同进程的标识•有效端口:0~65535,其中0~1024系统使用或保留端口。传输协议•通讯的规则•常见协议:TCP,UDP获取InetAddress对象:InetAddressi=InetAddress.getLocalHost();//抛出异常getHostAddress():返回IP地址字符串,以获取地址为主getHostName():获取此IP地址的主机名。需要解析。获取任意一台主机的IP地址对象:staticInetAddressgetByName(Stringhost):在给定主机名的情况下确定主机IP地址。InetAddressia=InetAddress.getByName(“192.168.1.254”);ia.getHostAddress();ia.getHostName()(名称不好获取,需要解析过程,可能会解析失败);如果IP地址和对应的主机名这个映射关系,没有在网络上,则即使找到地址,也解析不成功。则获取的主机名还是IP地址。InetAddress[]ia=InetAddress.getByName(“”);//百度有可能有多台主机,多个地址值ia.getHostAddress();//获取百度地址值23-05传输协议:通讯的规则;常见协议:TCP,UDPUDP:如QQ聊天、网络视频会议、桌面共享。求速度,数据不是很重要。•将数据及源和目的封装成数据包中,不需要建立连接•每个数据报的大小在限制在64k内•因无连接,是不可靠协议•不需要建立连接,速度快TCP:如下载•建立连接,形成传输数据的通道。•在连接中进行大数据量传输•通过三次握手完成连接,是可靠协议•必须建立连接,效率会稍低23-06Socket:传输层Socket就是为网络服务提供的一种机制。通信的两端都有Socket。网络通信其实就是Socket间的通信。数据在两个Socket间通过IO传输。23-07UDP传输:DatagramSocket与DatagramPacket建立发送端,接收端。建立数据包。调用Socket的发送接收方法。关闭Socket。发送端与接收端是两个独立的运行程序。需求:通过udp传输方式,将一段文字数据发送出去。思路:定义一个udp发送端1.建立udpsocket服务。(发送端点--邮局)。DategramSocketds=newDategramSocket();有SocketException异常2.提供数据,并将数据封装到数据包中。DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)byte[]buf=“udpok”.getBytes();DatagramPacketdp=newDatagramPacket(buf,buf.length,InetAddress.getByName(“192.168.1.254”),1000);有UnknownHostException异常(未发现主机异常)3.通过Socket服务的发送功能,将数据包发出去。ds.send(dp);//有IO异常4.关闭资源。ds.close();23-08需求:定义一个应用程序,用于接收udp协议传输的数据并处理数据。思路:定义一个udp接收端1.定义updsocket服务.通常会监听一个端口,其实就是给这个接收网络应用程序

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功