第12章 Windows Sockets API简介
12.1 填空
套接字一般分三种类型:字节流套接字(Stream Socket)、数据报套接字(Datagram Socket)、原始套接字(Raw Socket)。
在所有基于Windows Sockets的程序里,初始化函数WSAStartup()和终止函数WSACleanup()是必须使用的。
如果使用1.1版的Windows Sockets,那么WSAStartup()函数第一个参数应该取值0x101。
Windows Sockets提供了函数WSAGetLastError()来获取最近的错误码。 创建套接字使用socket()函数。
socket()函数的第二个参数决定套接字的类型,字节流套接字取值SOCK_STREAM,数据报套接字取值SOCK_DGRAM,原始套接字取值SOCK_RAW。
socket()函数出错返回INVALID_SOCKET。 关闭套接字使用closesocket()函数。
将套接字绑定到一个已知地址使用bind()函数。 bind()函数出错返回SOCKET_ERROR。 指示一个套接字等待连接使用listen()函数。 listen()函数出错返回SOCKET_ERROR。 接受客户连接是通过accept()函数来完成的。 accept()函数出错返回INVALID_SOCKET。
客户端通过调用connect()函数来完成同服务器端的连接。 connect()函数出错返回SOCKET_ERROR。
若无错误发生,send()函数返回实际发送的字节数;若发生错误,返回SOCKET_ERROR。
若无错误发生,recv()函数返回读入的字节数;如果连接已中止,返回0;如果出错返回SOCKET_ERROR。
若无错误发生,sendto()返回所发送数据的总数;否则返回SOCKET_ERROR错误。 若无错误发生,recvfrom()返回读入的字节数;如果连接已中止,返回0;否则返回SOCKET_ERROR错误。
gethostbyname()函数返回与指定的主机名对应的主机信息。 gethostbyaddr()函数返回与IP地址相应的主机信息。
220
第13章 TCP Socket编程
13.1 填空
填写TCP流程的空缺:
Serversocket()bind() linsten() accept() recv()send()Data (request)Data (reply)Clientsocket()connect() send()recv()closesocket() closesocket()221
第14章 UDP Socket编程
14.1 填空
填写UDP流程的空缺:
Serversocket() bind() recvfrom()sendto()Data (request)Data (reply)Clientsocket()bind() sendto()recvfrom()closesocket() closesocket()222
第15章 Raw Socket编程
15.1 问答
15.1.1 论述网卡的工作模式。
1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。
2)多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其他主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。
3)直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。
4)混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。
网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。
223
第16章 WinPcap编程
224
第17章 多线程编程
17.1 填空
Windows使用CreateProcess()函数创建进程,用CreateThread()函数创建线程。
等待进程或者线程执行结束使用WaitForSingleObject()或WaitForMultipleObjects()函数。
17.2 问答
17.2.1 根据进程与线程的设置,操作系统大致分为哪些类型?
(1)单进程、单线程,MS-DOS大致是这种操作系统;
(2)多进程、单线程,多数UNIX(及类UNIX的LINUX)是这种操作系统; (3)多进程、多线程,Win32(Windows NT/2000/XP等)、Solaris 2.x和OS/2都是这种操作系统;
(4)单进程、多线程,VxWorks是这种操作系统。 17.2.2 简述网络服务器的设计模式。
服务器可以分为循环式(iterative)、并发式(concurrent)和反应式(reactive)等几大类。
循环式服务器在处理一个请求时,要么将其他请求排成队列,要么忽略它们,它最适合以下两种服务:1、短期服务;2、不经常运行的服务。
并发式服务器同时处理多个客户请求,要么使用多线程,要么使用多进程。它非常适合“I/O操作频繁(I/O-bound)”的服务或“执行时间会变化”的长周期服务。
反应式服务器通常是通过“同步事件多路分离”策略来实现在一个线程中同时处理多个请求。它本质上是循环式的。因此存在以下局限性:1、编程的复杂性增加;2、可靠性和性能降低。
225
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库网络应用编程-试题库(5)在线全文阅读。
相关推荐: