互联网程序设计第一章简答题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章:简答题

1.问:什么是套接字?套接字的类型有哪些?区别在哪?

答:套接字是操作系统开放给程序员的网络编程接口,是介于应用层与传输层之间的一种软件抽象层,是属于操作系统级别的API。

套接字类型:流式套接字;数据报套接字;原始套接字。

区别:

(1)流式套接字提供连接服务,进行双向可靠的数据传输,它调用传输层TCP模块,保证数据无差错、无重复地发送并按顺序接收,数据被看做成是字节流,无长度限制。

(2)数据报套接字提供无连接服务,调用传输层UDP模块。报文以独立包的形式发送,不提供无差错控制,数据可能丢失或重复,顺序也可能混乱。

(3)原始套接字允许应用进程越过传输层,对较低层次协议模块直接调用的访问,可以接收发向本机的ICMP、IGMP报文,或者接收TCP模块、IP模块不能处理的数据报,或者访问设备配置信息等。

2.问:TCP/IP四层模型中各层的主要功能是什么?

答:TCP/IP网络模型从上至下由应用层、传输层、网络层、链路层组成。

应用层:应用层负责处理特定的应用程序细节。几乎各种不同的TCP/IP 实现都会提供下面这些通用的应用程序:Telnet远程登录、SMTP(简单邮件传输协议)、FTP(文件传输协议)、HTTP(超文本传输协议)等。

传输层:传输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

网络层:网络层处理分组在网络中的活动,例如分组的选路。在TCP/IP 协议族中,网络层协议包括IP协议(网际协议)、ICMP协议(网际控制报文协议)和IGMP协议(网际组管理协议)。

链路层:链路层有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

3.问:Java Socket API有哪些?熟悉每个类的定义与用法。

答:(1)socket():

函数原型:int socket(int domain,int type, int protocol);

函数作用:用于根据指定的地址族、数据类型和协议来分配一个套接口的描述字及其所用的资源的函数

(2)inet_ntoa():

函数原型:char *inet_ntoa(struct in_addr in);

函数作用:将IP地址,转换为点分十进制的字符串格式;

(3)inet_pton():

函数原型:int inet_pton(int af, const char *src, void *dst);

函数作用:将点分十进制的字符串格式的IP地址,转换成整数格式。

(4)inet_addr():

函数原型:in_addr_t inet_addr(const char *cp);

函数作用:inet_addr()的功能是将一个点分十进制的IP转换成一个长

整数型数(u_long类型)。

(5)select 函数以及 select相关函数:

函数原型:int select(int maxfdp, fd_set* readfds, fd_set* writefds,

fd_set* errorfds, struct timeval* timeout);

函数作用:它能够监视我们需要监视的文件描述符的变化情况——读写

或是异常。

4.问:描述创建Java线程的基本方法。

答:有两种基本方法:

(1)从Runnable接口入手,编写实现Runnable接口的类。Runnable接口仅包含一个run()方法,创建一个新的类实现Runnable接口。或者创建一个Runnable对象,将Runnable对象传递给Thread类的构造函数。

(2)从Thread类入手,编写Thread的子类。Thread类自身已实现了Runnable 接口,但它的run()方法没有定义任何代码,所以子类必须重写run()方法。

5.问:客户机与服务器是如何通信的?分别就TCP与UDP两种协议,描述其通信模型。

答:TCP:

UDP:

6.问:以TCP协议为例,描述客户机编程模板与服务器编程模板。

答:

客户机编程模板:

//1.创建客户机套接字

Socket clientSocket = new Socket();

//2.连接服务器

clientSocket.connect(remoteAddr);

//3.与服务器会话

BufferedReader in = new BufferedReader(

new InputStreamReader(

clientSocket.getInputStream())); BufferedWriter out = new BufferedWriter(

new OutputStreamWriter(

clientSocket.getOutputStream()));

String sendStr="有朋自远方来";

out.write(sendStr); //向服务器发送字符串

out.newLine();

out.flush();

String recvStr=in.readLine(); //从服务器接收字符串

//4.关闭套接字和流

if (in != null) in.close();

if (out != null) out.close();

if (clientSocket != null) clientSocket.close();

服务器编程模板:

//1.启动服务器

ServerSocket listenSocket = new ServerSocket();

listenSocket.bind(serverAddr);

//2.处理连接

Socket clientSocket = listenSocket.accept();

//3.与客户机会话

BufferedReader in = new BufferedReader(

new InputStreamReader(

clientSocket.getInputStream())); BufferedWriter out = new BufferedWriter(

new OutputStreamWriter(

clientSocket.getOutputStream()));

String recvStr=in.readLine(); //从客户机接收字符串

out.write(recvStr); //向客户机回送字符串

out.newLine();

out.flush();

//4.关闭套接字和流

if (in != null) in.close();

相关文档
最新文档