网络编程技术复习题.docx
《网络编程技术复习题.docx》由会员分享,可在线阅读,更多相关《网络编程技术复习题.docx(16页珍藏版)》请在冰豆网上搜索。
网络编程技术复习题
1,名词解释
【GUI】:
图形用户界面(GraphicalUserInterface)
【MIB】:
管理信息库(ManagementInformationBase)
【JVM】:
Java虚拟机(JavaVirtualMachine)
【JRE】:
Java运行时环境(JavaRuntimeEnvironment)
【JDK】:
Java开发工具(JavaDeveloper'sKit)
【URL】:
统一资源定位器
【J2EE】:
Java2平台企业版(Java2Platform,EnterpriseEdition)
【J2ME】:
Java2平台微缩版(Java2Platform,MicroEdition)
【J2SE】:
Java2平台标准版(Java2Platform,StandardEdition)
【AWT】:
抽象工具箱(AbstractWindowingToolkit)
【SNMP】:
简单网络管理协议(SimpleNetworkManagementProtocol)
【B/S模式】:
浏览器/服务器模式(Browser/Server)
【C/s模式】:
客户机/服务器模式
【API】:
应用编程接口,一种规范(ApplicationProgramInterface);
【HTTP】:
超文本传输协议
【HTML】:
超文本标记语言(HypertextMarkupLanguage)
【IDL】:
接口定义语言
【被动测量】:
主要是通过对网络流量及状态参数的监视和收集来完成测量任务
【主动测量】:
通过向网络中注入测试流量数据,并从其响应结果数据中测量网络状态参数
【Java容器】:
Java中用来存放其他控件的一种组件。
【多态】:
一个程序中同名的不同方法共存的情况,接口的不同实现方式
【重载】:
在同一类中定义了多个同名而不同内容的成员方法时,称这些方法是重载的方法
【覆盖】:
子类中定义与父类中已定义的相同名而内容不同的方法。
这种多态被称为覆盖
【继承】:
特殊类的对象拥有其一般类的全部或部分属性与方法,称作特殊类对一般类的继承。
Java中用extends指明继承关系
【消息】:
就是向对象发出服务请求,是对数据成员和成员方法的引用
【消息的作用】:
对象之间的联系是通过消息传递来实现的
【公有消息】:
当有一批消息同属于一个对象时,由外界对象直接发送给这个
对象的消息称为公有消息
【私有消息】:
对象自己发送给本身的消息称为私有消息
【JDBC】:
java数据库连接(JavaDataBaseConnectivity)
【DNS】:
域名服务器(DomainNameServer)
【JFC】:
java基础类别(JavaFoundationClasses(JFC))
【DDL】数据定义语言(DataDefinitionLanguage)
【ATM】异步传输模式(AsynchronousTransferMode)
【DML】数据操纵语言(DataManipulationLanguage)
【DQL】数据查询语言(DataQueryLanguage)
【DCL】数据控制语言(DataControlLanguage)
访问控制符(私有访问控制符private、缺省访问控制符、公共访问控制符public、保护访问控制符protected)
数据成员和成员方法的访问控制符有public、private、protected和缺省访问控制符
2,填空
1、URL通信使用(http)协议,Socket通信使用(TCP)协议。
UDP通信使用(UDP)协议。
2、线程中,Sleep()方法的功能是(使线程进入睡眠状态),Stop()方法的功能是(使线程进入死亡状态),Start()方法的功能是(使线程进入就绪状态)。
3、常用组件中,JLable的功能是(可以显示一行静态文本,起信息说明的作用),JBottom的功能是(用户可以指定按下按钮时所执行的操作),JCheckBox的功能是(用户点击某复选框就会改变该复选框原有的状态)。
4、Java中有关网络的类都包含在(J)包中。
5、数据成员和成员方法的访问控制符有(public)、(protected)、(friendly)、(private)4种。
6、网络管理的五大任务:
(失效管理)、(安全管理)、(性能管理)、(计费管理)、(配置管理).
7、SNMP的3种基本特征:
(get)、(set)、(Trap)。
8、常用组件中,JList的功能是(将所用选项放入列表框中),JTextField的功能是(定义一个单行条形文本区),JComboBox的功能是(创建下拉列表框)。
9、Java整数类型中,字节型(byte),短整型(short),整型(int),长整型(long),占用的字节数分别为:
(1)、
(2)、(4)、(8)。
3,问答
(1)获取网络数据方法
答:
获取网络数据的4种方法网卡采集属于基于监听方式
1.基于监听方式
2.利用SNMP查询网络设备(如路由器、交换机)的MIB
3.安插网络探针(PROBE)
4.利用IPFlow技术实现基于流级的流量采集
(2)Public与static修饰符特点
Public表示类修饰符时,表示这个类是公共类,可以供所在包以及其他包中的类使
Static修饰符所修饰的方法称为静态方法,属于整个类的类方法。
(3)什么是类与对象,类与对象的关系
把客观世界的事物映射到面向对象程序设计中,把问题域中的事物抽象成对象,把事物静态特征(属性)抽象成一组数据,把事物的动态特征(行为)抽象成一组方法.对象具有几个特征:
①对象标识②属性③方法。
类是对对象的抽象和归纳。
将当前目标有关的本质特征抽象出来,忽略非本质特征,找出共同性质的事物归结为一类。
类需要指明三个方面内容:
①类标识②属性说明③方法说明。
类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。
类与对象的关系如同模具与模具铸造的铸件关系。
也就是说可以把类与对象关系看成是抽象与具体的关系。
定义了类以后才可以在类的基础上创建对象。
(4)常用组件功能JButton,Jlabel等组件功能。
1JLabel组件称为标签,显示一行静态文本,起到信息说明作用,不接受用户输入,无事件响应。
2JButton,JToggleButton通常称为按钮,具有按下弹起两种状态,用户可以指定按下与按钮时要执行的操作。
JToggleButton按钮点击后不会弹起。
3JCheckBox组件称为复选框,提供“选中”和“未选中”两种状态。
4JRadioButton组件称为选项按钮,与JCheckBox组件功能相同,与ButtonGroup类组合运用可以实现单选框按钮功能。
5JComboBox组件称为下拉表框,将所有选项折叠收藏在一起,只显示最前面的或被用户选中的一个。
6JList组件称为列表组件,将所有选项放入列表框中。
7JTextField组件称为文本框。
定义了一个单行条形文本区,可以输出任何基于文本的信息,也可以接受用户输入。
8JTextArea组件称为文本域。
与JTextField区别是:
文本框只能输入/输出一行文本,而文本域可以输入/输出多行文本。
(5)线程的各种状态
一个完整的线程有新生,就绪,运行,阻塞和死亡五个状态。
1新生状态:
用new关键字创建线程对象,调用start()进入就绪状态。
2就绪状态:
已具备运行条件,尚未分配到CPU资源,进入线程队列排队。
一旦获得CPU资源,进入运行状态,调用自己的run方法。
3运行状态:
脱离其主线程,独立开始生命周期,执行自己run方法中的代码。
遇到终止,等待,睡眠,挂起,退让,I/O要求,时间片用完等情况时,终止run方法的执行。
4阻塞状态:
正在执行的线程在比如执行suspend,join,sleep方法,等待I/O设备等情况时,让出CPU并暂时中止执行,进入阻塞状态。
当阻塞原因被消除时,线程才转入就绪状态,重新进到线程队列等待CPU资源。
5死亡状态:
正常运行线程完成全部工作或被提前强制地终止,线程进入死亡状态,永远不再执行。
(6)常用的java包
java.lang:
Java语言的核心类库,包含了运行Java程序必不可少的系统类。
加载时缺省的。
java.io:
包中包含了实现Java程序与操作系统、用户界面以及其他Java程序之间进行数据交换所使用的类
java.awt:
是Java语言用来构建图形用户界面(GUl)的类库
java.awt.event:
对Event类的扩充,能够使图形界面元素拥有处理事件的能力。
:
是Java语言用来实现网络功能的类库
java.applet:
是用来实现运行于Internet浏览器中的JavaApplet的工具类库
java.rmi包,java.rmi.registry包,java.rmi.server包:
用来实现远程方法调用功能。
Java.util包:
包含了Java语言中一些低级的实用工具,比如Date。
java.sql:
是实现JDBC的类库
4,阅读
1),学生管理系统
2),基于SNMP-MIB网络数据获取。
简单网络管理协议
SnmpGet
importcom.adventnet.snmp.beans.*;
publicclassSnmpGet{
publicstaticvoidmain(Stringargs[]){
//初始化一个SNMPtarget实体或者说是一个对象
SnmpTargettarget=newSnmpTarget();
//设置运行SNMP代理的主机的IP地址
target.setTargetHost("x2.y2.y1.x1");
//设置对象标识OID(在原来的OID加上.0这是语法的规定)
target.setObjectID(".1.3.6.1.2.1.4.3.0");
//执行一个GET请求
Stringresult=target.snmpGet();
if(result==null)
{
//如果result是空的,说明请求失败,打印错误信息
System.err.println("Requestfailedortimedout.\n"+target.getErrorString());
}
//如果成功的话,打印接收到对象的值
else
{
//printthevalues
System.out.println("Responsereceived.
Value:
"+result);
}
System.exit(0);
}
}
SnmpGetLargeTable
importjavax.swing.*;
importjava.awt.event.*;
importcom.adventnet.snmp.ui.*;
publicclassSnmpGetLargeTable{
publicstaticvoidmain(Stringargs[]){
//构造一个JFrame框架实体
JFrameframe=newJFrame();
//在框架实体商添加一个窗口侦听器
frame.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEventevt)
{
System.exit(0);
}
}
);
//设置窗口的大小
frame.setSize(615,400);
//设置标题栏的标题
frame.setTitle("TutorialExampleforretreivingSNMPTableusingSnmpTablePanel");
//定义一个SnmpTablePanel实体
SnmpTablePaneltablepanel=newSnmpTablePanel();
//设置有关参数
tablepanel.setTargetHost("localhost");
tablepanel.setCommunity("public");
//加载MIB模型和设置表的标识OID,失败的话打印错误信息
try{
tablepanel.loadMibs("RFC1213-MIB");
tablepanel.setTableOID("ifTable");
}catch(Exceptionex){
System.err.println("Error:
"+ex);
}
//把tablepanel模板加入到框架中
frame.getContentPane().add(tablepanel);
//设置框架为可视的
frame.setVisible(true);
}
}
SnmpGetTable_one
importcom.adventnet.snmp.beans.*;
publicclassSnmpGetTable_one{
publicstaticvoidmain(Stringargs[]){
//如果不输入两个参数的话,这个线程就会退出,不在执行,并作出提示
if(args.length<2)
{
System.out.println("Usage:
javaSnmpGetTable_one
hostnametableoid");
System.exit(0);
}
//分别把参数1,和参数2赋给remoteHost,tableoid两个变量
StringremoteHost=args[0];
Stringtableoid=args[1];
//创建一个SnmpTable实例
SnmpTabletable=newSnmpTable();
//设置ip地址
table.setTargetHost(remoteHost);
//加载MIB信息库的模型和设置表的OID加载失败的话则抛出异常
try{
table.loadMibs("C:
\\Snmp\\AdventNet\\SNMPAPI\\mibs\\RFC1213-MIB");
table.setTableOID(tableoid);
}catch(Exceptionex){
}
System.out.println("Gettingtable.Tableitems:
");
//定义一个字符缓冲区
StringBuffersb=newStringBuffer();
try{Thread.sleep(10000);}//线程休眠10秒,
catch(InterruptedExceptionex){}
//把表要得列的名字放入sb字符缓冲区中
for(inti=0;i
{
switch(i){
case0:
;
case1:
;
case4:
;
case9:
;
case10:
sb.append(table.getColumnName(i)+"\t");
}
}
//打印出表的列的名字
System.out.println(sb.toString());
//定义一个字符缓冲区
StringBuffersb2=newStringBuffer();
//按照从行到列把表中的数据项放入到字符缓冲区中
for(intj=0;j
{
for(inti=0;i
{
switch(i){
case0:
;
case1:
;
case4:
;
case9:
;
case10:
sb2.append(table.getValueAt(j,i)+"\t");
}
}
sb2.append("\n");
}
System.out.println(sb2.toString());
System.exit(0);
}
}
3)JpcapTip
importjava.io.*;
importjpcap.*;
importjava.util.*;
importjava.text.*;
publicclassJpcapTipimplementsJpcapHandler{
staticintj=0;
staticlongp=0,q=0;
IPPacketip;
Strings,s1;
Longs2;
staticlongtime11,time12;
publicvoidhandlePacket(Packetpacket){
if(packetinstanceofIPPacket)
{
System.out.println("ok");
ip=(IPPacket)packet;
if(j<2000)
{
try{
RandomAccessFilerf=newRandomAccessFile("packet3.txt","rw");
rf.seek(rf.length());
rf.writeBytes(ip.src_ip+"\t"+ip.dst_ip+"\t"+ip.protocol+"\t"+
ip.length+"\t"+ip.version+"\t"+ip.ident+"\t"+
ip.rsv_frag+"\t"+ip.offset+"\t"+ip.hop_limit+"\t"+
ip.rsv_tos+"\r\n");
rf.close();
}
catch(Exceptione){
e.printStackTrace();
}
j++;
}
else
{
time12=System.currentTimeMillis();
System.out.println(""+time12+"-"+time11+"="+(time12-time11)+"\ncapturecount:
"+j);
System.exit(0);
}
}
}
publicstaticvoidmain(String[]args)throwsjava.io.IOException
{
String[]devices=Jpcap.getDeviceList();
StringdeviceName=devices[0];
Jpcapjpcap=Jpcap.openDevice(deviceName,1028,true,100);
//即将打开的设备名//
//从设备上一次读取的最大字节数//
//说明是否将设备设为混杂模式的Boolean值//
//超时值//
time11=System.currentTimeMillis();
while(true){
jpcap.loopPacket(10,newJpcapTip());
}
}
}
JDBC编程要点(连接JDBC的步骤)书354的程序一定要看
(1)在程序的首部用import语句将java.sql包引入程序:
importjava.sql.*;
(2)使用Class.forName()方法加载相应数据库的JDBC驱动程序。
若以加载jdbc-odbc桥为例,则相应的语句格式为:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
(3)定义JDBC的URL对象。
例如:
StringconURL="jdbc:
odbc:
TestDB";其中TestDB是我们设置的要创建的数据源。
(4)连接数据库。
Connections=DriverManager.getConnection(conURL);
(5)使用SQL语句对数据库进行操作。
(6)使用close()方法解除Java与数据库的连接并关闭数据库。
例如:
s.close();
5,编程
(1)socket通信
//Socke服务器程序
import.*;
importjava.io.*;
publicclassc15_5{
publicstaticfinalintport=8000;
publicstaticvoidmain(Stringargs[])
{
Stringstr;
try{//在端口port注册服务
ServerSocketserver=newServerSocket(port);//创建当前线程的监听对象
System.out.println("Started:
"+server);
Socketsocket=server.accept();//负责C/S通信的Socket对象
System.out.println("socket:
"+socket);
//获得对应Socket的输入/输出流
InputStreamfIn=socket.getInputStream();
OutputStreamfOut=socket.getOutputStream();
//建立数据流
InputStreamReaderisr=newInputStreamReader(fIn);
BufferedReaderin=newBufferedReader(isr);
PrintStreamout=newPrintStream(fOut);
InputStreamReaderuserisr=newInputStreamReader(System.in);
BufferedReaderuserin=newBufferedReader(userisr);
while(true){
System.out.println("等待客户端的消息...");
str=in.readLine();//读客户端传送的字符串
System.out.println("客户端:
"+str);//显示字符串
if(str.equals("end"))break;//如果是end,则退出
System.out.print("给客户端发送:
");
str=userin.readLine();
out.println(str)