您的当前位置:首页正文

网络编程技术复习题

2020-08-08 来源:独旅网
1, 名词解释

【GUI】:图形用户界面(Graphical User Interface) 【MIB】:管理信息库(Management Information Base) 【JVM】: Java虚拟机(Java Virtual Machine) 【JRE】:Java运行时环境(Java Runtime Environment) 【JDK】:Java开发工具(Java Developer's Kit) 【URL】:统一资源定位器

【J2EE】:Java2平台企业版(Java 2 Platform,Enterprise Edition) 【J2ME】:Java2 平台微缩版(Java 2 Platform, Micro Edition) 【J2SE】:Java2 平台标准版(Java 2 Platform ,Standard Edition) 【AWT】:抽象工具箱(Abstract Windowing Toolkit)

【SNMP】:简单网络管理协议(Simple Network Management Protocol) 【B/S模式】:浏览器/服务器模式(Browser/Server) 【C/s模式】:客户机/服务器模式

【API】:应用编程接口,一种规范(Application Program Interface); 【HTTP】:超文本传输协议

【HTML】:超文本标记语言(Hypertext Markup Language) 【IDL】:接口定义语言

【被动测量】:主要是通过对网络流量及状态参数的监视和收集来完成测量任务

【主动测量】:通过向网络中注入测试流量数据,并从其响应结果数据中测量网络状态参数

【Java容器】:Java中用来存放其他控件的一种组件。

【多态】:一个程序中同名的不同方法共存的情况,接口的不同实现方式 【重载】:在同一类中定义了多个同名而不同内容的成员方法时,称这些方法是重载的方法

【覆盖】:子类中定义与父类中已定义的相同名而内容不同的方法。这种多态被称为覆盖

【继承】:特殊类的对象拥有其一般类的全部或部分属性与方法,称作特殊类对一般类的继承。Java中用extends指明继承关系

【消息】:就是向对象发出服务请求,是对数据成员和成员方法的引用 【消息的作用】:对象之间的联系是通过消息传递来实现的

【公有消息】:当有一批消息同属于一个对象时,由外界对象直接发送给这个 对象的消息称为公有消息

【私有消息】:对象自己发送给本身的消息称为私有消息

【JDBC】:java数据库连接(Java Data Base Connectivity) 【DNS】: 域名服务器(Domain Name Server) 【JFC】:java基础类别(Java Foundation Classes (JFC)) 【DDL】数据定义语言(Data Definition Language)

【ATM】异步传输模式(Asynchronous Transfer Mode) 【DML】数据操纵语言 (Data Manipulation Language) 【DQL】数据查询语言 (Data Query Language) 【DCL】数据控制语言 (Data Control Language)

访问控制符(私有访问控制符private、缺省访问控制符、公共访问控制符public、保护访问控制符protected)

数据成员和成员方法的访问控制符有public、private、protected和缺省访问控制符 2,填空

1、URL通信使用(http)协议,Socket通信使用(TCP)协议。UDP通信使用(UDP)协议。

2、线程中,Sleep()方法的功能是(使线程进入睡眠状态),Stop()方法的功能是(使线程进入死亡状态),Start()方法的功能是(使线程进入就绪状态)。

3、常用组件中,JLable的功能是(可以显示一行静态文本,起信息说明的作用),JBottom的功能是(用户可以指定按下按钮时所执行的操作),

JCheckBox的功能是(用户点击某复选框就会改变该复选框原有的状态)。 4、Java中有关网络的类都包含在(Java.net)包中。

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. 利用IP Flow技术实现基于流级的流量采集 (2) Public 与static 修饰符特点

Public表示类修饰符时,表示这个类是公共类,可以供所在包以及其他包中的类使

Static修饰符所修饰的方法称为静态方法,属于整个类的类方法。 (3) 什么是类与对象,类与对象的关系

把客观世界的事物映射到面向对象程序设计中,把问题域中的事物抽象成对象,把事物静态特征(属性)抽象成一组数据,把事物的动态特征(行为)抽象成一组方法.对象具有几个特征: ①对象标识②属性③方法。

类是对对象的抽象和归纳。将当前目标有关的本质特征抽象出来,忽略非本质特征,找出共同性质的事物归结为一类。类需要指明三个方面内容:①类标识②属性说明③方法说明。

类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。类与对象的关系如同模具与模具铸造的铸件关系。也就是说可以把类

与对象关系看成是抽象与具体的关系。定义了类以后才可以在类的基础上创建对象。

(4) 常用组件功能JButton,Jlabel等组件功能。

① JLabel组件称为标签,显示一行静态文本,起到信息说明作用,不

接受用户输入,无事件响应。

② JButton,JToggleButton通常称为按钮,具有按下弹起两种状态,用

户可以指定按下与按钮时要执行的操作。JToggleButton按钮点击后不会弹起。

③ JCheckBox组件称为复选框,提供“选中”和“未选中”两种状态。 ④ JRadioButton组件称为选项按钮,与JCheckBox组件功能相同,与

ButtonGroup类组合运用可以实现单选框按钮功能。

⑤ JComboBox组件称为下拉表框,将所有选项折叠收藏在一起,只显示

最前面的或被用户选中的一个。

⑥ JList组件称为列表组件,将所有选项放入列表框中。

⑦ JTextField组件称为文本框。定义了一个单行条形文本区,可以输

出任何基于文本的信息,也可以接受用户输入。

⑧ JTextArea组件称为文本域。与JTextField区别是:文本框只能输

入/输出一行文本,而文本域可以输入/输出多行文本。

(5) 线程的各种状态

一个完整的线程有新生,就绪,运行,阻塞和死亡五个状态。

① 新生状态:用new关键字创建线程对象,调用start()进入就绪状

态。

② 就绪状态:已具备运行条件,尚未分配到CPU资源,进入线程队列排

队。一旦获得CPU资源,进入运行状态,调用自己的run方法。 ③ 运行状态:脱离其主线程,独立开始生命周期,执行自己run方法中

的代码。遇到终止,等待,睡眠,挂起,退让,I/O要求,时间片用完等情况时,终止run方法的执行。

④ 阻塞状态:正在执行的线程在比如执行suspend,join,sleep方法,

等待I/O设备等情况时,让出CPU并暂时中止执行,进入阻塞状态。当阻塞原因被消除时,线程才转入就绪状态,重新进到线程队列等待CPU资源。

⑤ 死亡状态:正常运行线程完成全部工作或被提前强制地终止,线程进

入死亡状态,永远不再执行。

(6) 常用的java包

java.lang:Java语言的核心类库,包含了运行Java程序必不可少的系统类。加载时缺省的。

java.io:包中包含了实现Java程序与操作系统、用户界面以及其他Java程序之间进行数据交换所使用的类

java.awt:是Java语言用来构建图形用户界面(GUl)的类库

java.awt.event:对Event类的扩充,能够使图形界面元素拥有处理事件的能力。

java.net:是Java语言用来实现网络功能的类库

java.applet:是用来实现运行于Internet浏览器中的Java Applet的工具类库

java.rmi包,java.rmi.registry包,java.rmi.server包:用来实现远程方法调用功能。

Java.util包:包含了Java语言中一些低级的实用工具,比如Date。 java.sql:是实现JDBC的类库 4,阅读

1),学生管理系统

2),基于SNMP-MIB网络数据获取。 简单网络管理协议

SnmpGet

import com.adventnet.snmp.beans.*;

public class SnmpGet {

public static void main(String args[]) {

// 初始化一个SNMP target 实体或者说是一个对象 SnmpTarget target = new SnmpTarget();

// 设置运行SNMP代理的主机的IP地址 target.setTargetHost(\"x2.y2.y1.x1\");

// 设置对象标识OID(在原来的OID加上.0 这是语法的规定) target.setObjectID(\".1.3.6.1.2.1.4.3.0\");

// 执行一个GET请求

String result = target.snmpGet(); if (result == null) {

//如果result是空的,说明请求失败,打印错误信息 System.err.println(\"Request failed or timed out. \\n\"+ target.getErrorString());

}

//如果成功的话,打印接收到对象的值 else { // print the values

System.out.println(\"Response received. Value:\" + result); }

System.exit(0); } }

SnmpGetLargeTable

import javax.swing. *;

import java.awt.event. *;

import com.adventnet.snmp.ui. *; public class SnmpGetLargeTable {

public static void main (String args[]) { //构造一个JFrame 框架实体

JFrame frame = new JFrame (); //在框架实体商添加一个窗口侦听器

frame.addWindowListener (new WindowAdapter () { public void windowClosing (WindowEvent evt) { System.exit (0); } } );

//设置窗口的大小

frame.setSize (615, 400); //设置标题栏的标题

frame.setTitle (\" Tutorial Example for retreiving SNMP Table using SnmpTablePanel\");

//定义一个SnmpTablePanel 实体

SnmpTablePanel tablepanel = new SnmpTablePanel (); //设置有关参数

tablepanel.setTargetHost(\"localhost\"); tablepanel.setCommunity(\"public\");

//加载MIB模型和设置表的标识OID,失败的话打印错误信息 try {

tablepanel.loadMibs(\"RFC1213-MIB\"); tablepanel.setTableOID (\"ifTable\"); } catch (Exception ex) {

System.err.println(\"Error: \"+ex); }

//把tablepanel模板加入到框架中

frame. getContentPane().add(tablepanel); //设置框架为可视的

frame.setVisible(true); } }

SnmpGetTable_one

import com.adventnet.snmp.beans.*;

public class SnmpGetTable_one {

public static void main(String args[]) {

//如果不输入两个参数的话,这个线程就会退出,不在执行,并作出提示 if (args.length < 2) {

System.out.println (\"Usage : java SnmpGetTable_one hostname tableoid \"); System.exit (0); }

//分别把参数1,和参数2赋给remoteHost,tableoid两个变量 String remoteHost = args[0]; String tableoid = args[1]; //创建一个SnmpTable实例

SnmpTable table = new SnmpTable(); //设置ip地址

table.setTargetHost(remoteHost);

//加载MIB信息库的模型和设置表的OID 加载失败的话则抛出异常 try {

table.loadMibs(\"C:\\\\Snmp\\\\AdventNet\\\\SNMPAPI\\\\mibs\\\\RFC1213-MIB\");

table.setTableOID(tableoid); }catch (Exception ex) { }

System.out.println(\"Getting table. Table items:\"); //定义一个字符缓冲区

StringBuffer sb = new StringBuffer();

try { Thread.sleep(10000); } // 线程休眠10秒, catch (InterruptedException ex) {} //把表要得列的名字放入sb字符缓冲区中

for (int i=0;iswitch(i){ case 0:; case 1:; case 4:; case 9:; case 10:sb.append(table.getColumnName(i)+\" \\");

} }

//打印出表的列的名字

System.out.println(sb.toString()); //定义一个字符缓冲区

StringBuffer sb2 = new StringBuffer();

//按照从行到列把表中的数据项放入到字符缓冲区中 for (int j=0;j} } sb2.append(\"\\n\"); }

System.out.println(sb2.toString()); System.exit(0); }

} 3)JpcapTip

import java.io.*; import jpcap.*; import java.util.*; import java.text.*;

public class JpcapTip implements JpcapHandler { static int j=0;

static long p=0,q=0; IPPacket ip; String s,s1; Long s2;

static long time11,time12;

public void handlePacket(Packet packet){

if(packet instanceof IPPacket) {

System.out.println(\"ok\"); ip=(IPPacket)packet;

if(j<2000) { try {

RandomAccessFile rf = new RandomAccessFile(\"packet3.txt\\"rw\");

rf.seek(rf.length());

rf.writeBytes(ip.src_ip+\"\\"+ip.dst_ip+\"\\"+ip.protocol+\"\\"+

ip.length+\"\\"+ip.version+\"\\"+ip.ident+\"\\"+

ip.rsv_frag+\"\\"+ip.offset+\"\\"+ip.hop_limit+\"\\"+ ip.rsv_tos+\"\\r\\n\"); rf.close(); }

catch (Exception e) { e.printStackTrace(); } j++;

} else {

time12=System.currentTimeMillis();

System.out.println(\"\"+time12+\"-\"+time11+\"=\"+(time12-time11)+\"\\ncapture count:\"+j); System.exit(0); } } }

public static void main(String[] args) throws java.io.IOException { String[] devices = Jpcap.getDeviceList(); String deviceName = devices[0];

Jpcap jpcap = Jpcap.openDevice(deviceName, 1028, true, 100); //即将打开的设备名// //从设备上一次读取的最大字节数//

//说明是否将设备设为混杂模式的Boolean值// //超时值//

time11=System.currentTimeMillis(); while(true) {

jpcap.loopPacket(10, new JpcapTip()); } }

}

JDBC编程要点(连接JDBC的步骤)书354的程序一定要看

(1) 在程序的首部用import语句将java.sql包引入程序: import java.sql.*;

(2) 使用Class.forName( )方法加载相应数据库的JDBC驱动程序。若以加载jdbc-odbc桥为例,则相应的语句格式为:

Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\");

(3) 定义JDBC的URL对象。例如:String conURL=\"jdbc:odbc:TestDB\"; 其中TestDB是我们设置的要创建的数据源。

(4) 连接数据库。Connection s=DriverManager.getConnection(conURL); (5) 使用SQL语句对数据库进行操作。

(6) 使用close( )方法解除Java与数据库的连接并关闭数据库。例如:s.close( ); 5,编程

(1) socket 通信

//Socke 服务器程序 import java.net.*; import java.io.*; public class c15_5{

public static final int port=8000; public static void main(String args[]) {

String str;

try{ //在端口port注册服务

ServerSocket server=new ServerSocket(port); //创建当前线程的监听对象

System.out.println(\"Started: \"+server);

Socket socket=server.accept(); //负责C/S通信的Socket对象

System.out.println(\"socket: \"+socket); //获得对应Socket的输入/输出流

InputStream fIn=socket.getInputStream(); OutputStream fOut=socket.getOutputStream(); //建立数据流

InputStreamReader isr=new InputStreamReader(fIn); BufferedReader in=new BufferedReader(isr); PrintStream out=new PrintStream(fOut); InputStreamReader userisr=new InputStreamReader(System.in);

BufferedReader userin=new BufferedReader(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); //向客户端发送消息 if(str.equals(\"end\"))break; } //while

socket.close(); server.close(); } //try

catch(Exception e){

System.out.println(\"异常:\"+e); } } }

//Socket客户端程序 import java.net.*; import java.io.*; public class c15_6{

public static void main(String[] args) {

String str; try{

InetAddress addr=InetAddress.getByName(\"127.0.0.1\");

// InetAddress addr=InetAddress.getByName(\"198.198.1.68\"); Socket socket=new Socket(addr,8000); System.out.println(\"socket=\"+socket); //获得对应socket的输入/输出流

InputStream fIn=socket.getInputStream(); OutputStream fOut=socket.getOutputStream(); //建立数据流

InputStreamReader isr=new InputStreamReader(fIn); BufferedReader in=new BufferedReader(isr); PrintStream out=new PrintStream(fOut);

InputStreamReader userisr=new InputStreamReader(System.in); BufferedReader userin=new BufferedReader(userisr); while(true){

System.out.print(\"发送字符串:\");

str=userin.readLine(); //读取用户输入的字符串 out.println(str); //将字符串传给服务器端

if(str.equals(\"end\"))break; //如果是\"end\就退出 System.out.println(\"等待服务器端消息...\"); str=in.readLine(); //获取服务器获得字符串 System.out.println(\"服务器端字符:\"+str); if(str.equals(\"end\"))break;

}

socket.close(); //关闭连接 }

catch(Exception e){

System.out.println(\"异常:\"+e); } } } (2) 编写对话框

import java.awt.*;

import java.awt.event.*; import javax.swing.*;

public class HelloTest extends JFrame {

JLabel lb1=new JLabel(\"请输入你的名字:\"); JButton bt=new JButton(\"关闭\"); JTextField tf1=new JTextField(5); JTextField tf2 =new JTextField(10); public void init(){ this.setLayout(new FlowLayout()); this.setSize(220,150); this.add(lb1); this.add(tf1); this.add(tf2); this.add(bt); this.setVisible(true); tf1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String str1; str1=tf1.getText(); tf2.setText(str1+\欢迎您!\\n\"); } }); bt.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); }

}); }

public static void main(String[]args){ HelloTest a =new HelloTest(); a.init(); } }

(3)Fibonacci数列前50项 public class Fibonacci { static int i=50;

public static void main(String[] arg){ for(int j=0;j<=i;j++) }

System.out.println(\"Fibonacci 第\"+j+\"项=\"+fib(j));} static long fib(int n){ if(n==1||n==0){ return n;} }

else{ long sum=fib(n-1)+fib(n-2); return sum; }

因篇幅问题不能全部显示,请点此查看更多更全内容