[网络通信编程技术]
《网络通信编程技术》复习题
一、 选择题
1、JAVA作为一种OOP(面向对象程序设计)语言,其核心是( B )
A.包 B.类 C.函数 D.属性
2、以下关于类的属性的描述中正确的是( A )
A.类的私有(private)属性只能在类的内部访问
B.类的保护(protocted)属性只能在类的内部访问
C.类的公有(public)属性只能在类的内部访问
D.类的最终(final)属性只能在类的内部访问
3、要设计一个GUI窗口,可以自定义一个窗口类,这个类应该从类( B )派生而来。
A.JWin B.JFrame C.JComponent D.JContent
4、定义一个类,一般需要用到关键字( C )
A.define B.create C.class D.construct
5、定义类的一个对象,一般需要用到关键字( D )
A.define B.class C.object D.new
6、以下类中可以用于对二进制文件进行写操作的类是( C )
A.BufferedWriter B.Reader C.FileOutputStream D.DataInputStream
7、为了读取串行化的对象,需要使用类( C )
A.ObjectInputStream B.ObjectOutputStream C.DataInputStream D.OutputStream
8、通过File类不能实现的功能是( C )
A.获取文件名 B.获取文件大小 C.获取文件内容 D.删除文件
9、Socket对象是通过IO流进行数据的接收与发送的,为了发送数据,需要使用方法( A )获取输
出流。
A.getOutputStream B.getOutput C.getStream D.getDataOutputStream
10、创建一个服务器端的ServerSocket对象时,一般需要提供( C )。
A.服务器IP地址 B.客户端IP地址 C.服务器端的端口号 D.客户的端口号
11、创建一个客户端的Socket对象时,一般需要提供( A )。
A.服务器的IP地址与端口号 B.服务器的IP地址、客户的端号号
C.客户的IP地址、服务器的端口号 D.客户的IP地址与端口号
12、以对象为单位把某个对象写入文件,需要使用方法( )。
A.write B.writeUTF C.writeObject D.writeInt
13、能够以字符串为单位写入文件的类是( )。
A.Writer B.FileWriter C.OutputStream D.BufferedWriter
14、当线程被创建后,其所处的状态是( D )。
A.阻塞状态 B.运行状态 C.就绪状态 D.新建状态
15、当线程调用Start后,其所处的状态是( C )。
A.阻塞状态 B.运行状态 C.就绪状态 D.新建状态
16、当线程调用sleep方法,且等待时间到达后,线程所处的状态是( C )。
A.阻塞状态 B.运行状态 C.就绪状态 D.新建状态
17、当线程调用start方法并获得CPU调度后,线程会执行方法( D )。
A.notify B.resume C.init D.run
18、ServerSocket类的监听方法accept的返回值类型是( B )。
A.ServerSocket B.Socket C.void D.Object
19、使用Java访问数据库,需要加载数据库驱动程序,该操作调用的方法是( A )。
A.Class.forName B.Driver.forName C.Driver.getConnection D.Class.getConnection
20、Java与数据库连接后,若需要查看某个表中的数据,一般使用方法( A )。
A.executeQuery B.executeUpdate C.query D.update
21、在Java语言中,负责并发机制管理的机制是( D )。
A.垃圾回收 B.虚拟机 C.代码安全 D.多线程
二、 填空题
1、要设计一个GUI窗口,可以自定义一个窗口类,这个类一般应该从类( JFrame )派生而来。
2、若要定义自己的线程类,该类应该从类( Thread )派生而来,或者实现( Runnable )
接口。
3、若要处理一个按钮的点击事件,需要调用该按钮的( )方法添加一个监听器,该监听器应该
实现了( )接口,且重写了( )方法。
4、一个类若要能够串行化,该类应该实现了( Serializable )接口。
5、在编程面向连接的Sokcet程序时,一般在服务器端要定义类( ServerSocket )的对象,在客
户端要定义类( Socket )的对象。
6、与网络编程相关的类大多包含在包( java.net )中。
7、Java提供的线程同步机制,往往要使用关键字( synchronized )。
8、类( InetAddress )用来封装IP地址与DNS,从而可以用其对象来标识主机。
9、在Java中可以用语句( try{} catch(){} )实现对异常的捕获与处理。
10、Java中的IO流分为两类,一类是( 输入流 ),另一类是( 输出流 )。
三、程序阅读题
1、写出下面程序的输出结果。
public class ExceptionTester
{
public static void main(String args[])
{
int b = 0;
System.out.print(
try
{
System.out.print(
int a = 4 / b; System.out.print(
}
catch(Exception e)
{
System.out.print(
}
finally
{
System.out.print(
}
System.out.print(
}
}
结果:12456
2、写出下面程序的输出结果。
class MyThread1 extends Thread
{
public static void main(String args[])
{
System.out.println(
MyThread1 thread = new MyThread1();
System.out.println(
thread.start();
System.out.println(
}
public void run()
{
{
sleep(100);
}
catch(Exception e)
{
System.out.println(e);
}
System.out.println(
}
}
1
2
3
四、程序填空题(每空只能填写一条语句或者一个表达式)
1、以下是一个简单的GUI程序,当用户点击按钮“改变颜色”后,窗口客户区的颜色在红色与灰色之间变化。请将其中缺少的部分补充完整。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class FrameTest implements ActionListener
{
private JButton colorBtn = new JButton(
private int hitTimes = 0;
public ()
{
getContentPane().setLayout(new FlowLayout());
getContentPane().add(colorBtn);
colorBtn.addActionListener( );
setSize(150,160);
setVisible(true);
}
public void (ActionEvent e)
{
if (hitTimes == 1)
{
getContentPane().setBackground(Color.RED);
hitTimes = 0;
}
else if (hitTimes == 0)
{
(Color.GRAY);
hitTimes = 1;
}
}
}
2、以下程序用于获取本机地址信息。请将其中缺少的部分补充完整。
import ;
public class LocalHostTest
{
public static void main(String[] args)
{
try
{
();
System.out.println(
}
(UnknownHostException e)
{
e.printStackTrace();
}
}
}
3、以下代码用于实现文本文件的复制功能。请将其中缺少的部分补充完整。
import ;
public class Copy_Filebuf
{
public static void main(String args[]) throws IOException
{
String data=new String();
BufferedReader br = new BufferedReader(new FileReader(
BufferedWriter bw=new (new FileWriter(
while((data=br.readLine())!=null)
{
(data);
bw.newLine();
}
bw.flush();
br.close();
;
}
}
4、以下代码是一个Socket客户端程序,可以实现向指定服务器的连接,当连接成功后,会向服务器发送一个圆的半径值,然后接收并显示从服务器返回的圆的面积值。请将其中缺少的部分补充完整。
import java.net.*;
import java.io.*;
public class Client
{
public static void main(String[] args) throws Exception
{
Socket client = new (
);
DataOutputStream out = new DataOutputStream(client.getOutputStream());
(“4.5”); //发送圆的半径
out.flush();
String str = 接收信息
System.out.println(
in.close(); //关闭输入输出流,应在关闭socket之前
out.close();
; //关闭连接
}
}
5、以下代码是一个Sokcet服务器端程序,可以接收客户发送的圆的半径值,并返回用户对应的面积值。请将其中缺少的部分补充完整。
import java.net.*;
import java.io.*;
public class MultiServerTest
{
public static void main(String[] args) throws Exception
{
ServerSocket serverSocket = new //创建服务器套接字
while (true)
{
//侦听连接请求
Thread t = new Thread(new Runnable()
{
public void ()
{
try
{
DataOutputStream out = new DataOutputStream(toClient.getOutputStream()); String str = 等待接收信息
double radius = Double.parseDouble(str); //将字符串转换成实数
double area = Math.PI * radius * radius; //计算圆的面积
out.writeUTF(
out.flush();
in.close(); //关闭输入输出流,应在关闭socket之前
toClient.close(); //关闭连接Socket,必须在关闭serverSocket之前调用 }
catch(Exception e)
{
e.printStackTrace();
}
}
});
//启动线程
}
}
}
6、以下代码用于读取由URL指定的一个网页的源代码,并将写入指定的文件。请将其中缺少的部分补充完整。
import java.net.*;
import java.io.*;
public class Source
{
public static void main(String args[]) throws Exception
{
URL url = (
InputStream in = url. (); //通过url建立一个输入流
FileOutputStream out = new FileOutputStream(new (
while((c = in.read()) != -1) //读取一个字节的数据
{
(c); //写入一个字节的数据
}
in.close();
out.close();
}
}
五、简答题
1、线程的生命周期包括哪些状态,试给出这些状态之间的切换图。
2、对于一个典型的Sokcet程序,试描述其工作过程包含的四个基本操作步骤。
3、试描述Java数据库操作的基本流程。
4、试描述URL的组成部分,并给出一个URL的实例。
5、JAVA提供了Socket及数据报两个网络通信编程模式,试对比两个模式所包含的基本操作步骤的差异。