答案 13章 JAVA程序设计案例教程 周怡 张英 主编

更新时间:2023-12-20 13:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一.判断题

1.X。该题难度一般,参见13.1.1节。 2.√。该题较易,参见13.1.3节。 3.√。该题难度一般,参见13.1.2节。 4.X。该题难度一般,参见13.1.2节。 5.X。该题难度一般,参见13.2.2节。 6.√。该题难度一般,参见13.4.2节。 二.选择题

1.B。该题较易,参见13.1.3节。 2.A 。该题较易,参见13.2节。 3.B。该题难度一般,参见13.3节。 4.A。该题较易,参见13.2.2节。 5.C。该题较易,参见13.4.1节。 6.D。该题较易,参见13.4.1节。 7.D。该题较难,参见13.1.2节。 8.B。该题较易,参见13.2节。 三.填空题

1. 物理 层的通信为真实物理通信,其它各层为虚拟通信。

该题难度一般,参见13.1.1节。

2. IE浏览器 是用来浏览Internet上的主页的客户端软件。

该题较易,参见13.1.2节。

3.IP地址的表示分为4段,每段 8 位。

该题较易,参见13.1.2节。

4.25端口是SMTP,80端口是 http 。

该题较易,参见13.1.3节。

5.套接字分为ServerSocket和 Socket 。

该题较易,参见13.2.2节。

6.UDP传输基于数据报,与TCP不同,它是面向 流 的传输。

该题难度一般,参见13.2.1节。 四.简答题

1.什么是套接字?

答: TCP 连接的端点就是套接字(socket),把端口号拼接到IP 地址即构成了套接字。 该题较易,参见13.2.12节。

2. 套接字有哪几种,各种的功能是什么?

答: 套接字通常分为以下3种类型;流套接字,TCP(Transport Control Protocol)协

议使用此类接口;数据报套接字UDP(User Datagram Protocol)协议使用此类接口;原始数据报套接字,主要用于开发新的协议或用于提取协议较隐蔽的功能。 该题较易,参见13.2.12节。 3.简述C/S通信模式有什么特点?

答: 通信双方中的一方作为服务器端等待客户端提出请求并予以响应,客户端则在需要服

务时向服务器端提出申请。 该题较易,参见13.2节。

4.简述TCP套接字的步骤,以及每一个步骤的功能是什么。 答: 对于一个功能齐全的Socket,其工作过程一般包含以下3个基本步骤。1:创建Socket。

2:打开Socket的输入/输出流,按照网络协议对Socket进行读/写操作。3:关闭Socket。 该题较易,参见13.2.12节。 5.UDP通信的特点是什么?

答: UDP则是面向无连接、不可靠的,基于数据包的传输协议。UDP这种传输方法是快速和高效的,但是数据的安全性却不佳。由于它的快速性与高效性,目前在许多方面都应用它,比如现在许多网络游戏也都采用了UDP协议通信。 该题难度一般,参见13.4节。 五.程序设计题

1.编写一个程序输出中国药科大学的网站所对应的IP地址。

import java.net.*;

public class OReillyByName {

public static void main (String[] args) { try {

InetAddress address = InetAddress.getByName(\ System.out.println(address); }

catch (UnknownHostException ex) {

System.out.println(\ } } }

2. 编写一个程序,输出微软公司网站(www.microsoft.com)所对应的多个IP地址信息。

import java.net.*;

public class AllAddressesOfMicrosoft { public static void main (String[] args) { try {

InetAddress[] addresses =

InetAddress.getAllByName(\ for (int i = 0; i < addresses.length; i++) { System.out.println(addresses[i]); } }

catch (UnknownHostException ex) {

System.out.println(\ } } }

3. 有时候想用某些端口但不知道该端口是否正在被使用,编程实现判断从0到1023的这些端口中哪些正被使用。

import java.net.*; import java.io.*;

public class LowPortScanner {

public static void main(String[] args) { String host = \ if (args.length > 0) { host = args[0]; }

for (int i = 1; i < 1024; i++) { try {

Socket s = new Socket(host, i);

System.out.println(\ + host); }

catch (UnknownHostException ex) { System.err.println(ex); break; }

catch (IOException ex) {

// must not be a server on this port } } // end for

} // end main

} // end PortScanner

4. 可以通过时间服务器(time.nist.gov)的13号端口获取诸如\Nov 29 23:39:15 2013\的时间信息,该信息的获取要用到套接字的InputStream,试编程实现。

import java.net.*; import java.io.*;

public class DaytimeClient {

public static void main(String[] args) { String hostname; if (args.length > 0) { hostname = args[0]; } else {

hostname = \ } try {

Socket theSocket = new Socket(hostname, 13); InputStream timeStream = theSocket.getInputStream( );

StringBuffer time = new StringBuffer( ); int c;

while ((c = timeStream.read( )) != -1) time.append((char) c); String timeString = time.toString( ).trim( );

System.out.println(\ } // end try

catch (UnknownHostException ex) { System.err.println(ex); }

catch (IOException ex) { System.err.println(ex); }

} // end main

} // end DaytimeClient

5. 实现一个UDP协议的时间服务器,服务器在端口13侦听到来的客户端请求,返回当前时间给客户机。

import java.net.*; import java.io.*; import java.util.*;

public class UDPDaytimeServer extends UDPServer { public final static int DEFAULT_PORT = 13;

public UDPDaytimeServer( ) throws SocketException { super(DEFAULT_PORT); }

public void respond(DatagramPacket packet) { try {

Date now = new Date( );

String response = now.toString( ) + \ byte[] data = response.getBytes(\

DatagramPacket outgoing = new DatagramPacket(data, data.length, packet.getAddress( ), packet.getPort( )); socket.send(outgoing); }

catch (IOException ex) { System.err.println(ex); } }

public static void main(String[] args) { try {

UDPServer server = new UDPDaytimeServer( );

server.start( ); }

catch (SocketException ex) { System.err.println(ex); } } }

6. 用UDP协议实现时间服务器的客户端程序。

import java.net.*; import java.util.*;

public class UDPTimeClient {

public final static int DEFAULT_PORT = 37;

public final static String DEFAULT_HOST = \

public static void main(String[] args) { InetAddress host;

int port = DEFAULT_PORT; try {

if (args.length > 0) {

host = InetAddress.getByName(args[0]); } else {

host = InetAddress.getByName(DEFAULT_HOST); } }

catch (Exception ex) {

System.out.println(\ return; }

if (args.length > 1) { try {

port = Integer.parseInt(args[1]);

if (port <= 0 || port > 65535) port = DEFAULT_PORT;; }

catch (Exception ex){ } } try {

UDPPoke poker = new UDPPoke(host, port); byte[] response = poker.poke( ); if (response == null) {

System.out.println(\

return; }

else if (response.length != 4) {

System.out.println(\ return; }

// The time protocol sets the epoch at 1900, // the Java Date class at 1970. This number // converts between them.

long differenceBetweenEpochs = 2208988800L; long secondsSince1900 = 0; for (int i = 0; i < 4; i++) { secondsSince1900

= (secondsSince1900 << 8) | (response[i] & 0x000000FF); }

long secondsSince1970

= secondsSince1900 - differenceBetweenEpochs; long msSince1970 = secondsSince1970 * 1000; Date time = new Date(msSince1970); System.out.println(time); }

catch (Exception ex) {

System.err.println(ex); ex.printStackTrace( ); } } }

本文来源:https://www.bwwdw.com/article/hgw5.html

Top