如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
《数据通信与计算机网络(第二版)》电子教案本讲内容8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.1Socket接口概念8.4.2Socket编程模型8.4.2Socket编程模型8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.3UnixSocket编程8.4.4WinSock编程1、包含一个新的头文件在Windows环境下,编写网络程序时,需要头文件Winsock.h。但不需要再包含Windows.h头文件。8.4.4WinSock编程8.4.4WinSock编程8.4.4WinSock编程8.4.4WinSock编程6、使用SocketWinsock数据传输函数:send和sendto函数用于数据传送,recv和recvfrom函数用于数据接收。如果函数执行成功,将返回实际传输的字节数。send和recv函数只用于连接的Socket,而其它函数不受限制。使用一个连接的SocketResult=send(socket_handle,message_buffer,buffer_length,special_flags);Result=recv(socket_handle,message_buffer,buffer_length,special_flags)使用一个无连接Socket无连接Socket使用sendto和recvfrom函数进行数据传输:Result=sendto(socket_handle,message_buffer,buffer_length,special_flags,socket_address_structure,address_structure_length);Result=recvfrom(socket_handle,message_buffer,buffer_length,special_flags,socket_address_structure,address_structure_length)7、阻塞函数、非阻塞函数和异步函数Winsock将函数分为阻塞函数和非阻塞函数。阻塞函数在完成其网络操作之前禁止用户程序调用其它Winsock函数。非阻塞函数要么立即完成其操作要么返回一个错误信息,它不等待其工作完成。Winsock专有的异步函数利用了Windows的消息驱动机制。异步函数调用只对启动操作负责,它也不等待操作完成,所以异步函数是不阻塞的,操作系统监视此操作的完成。当一个异步操作完成时,Windows给启动该异步操作的目标(通常是一个窗口)发送一个消息。8、使用非阻塞Socket在缺省情况下,Berkeley和Winsock都是建立阻塞的Socket,当该Socket调用阻塞函数时,将引起阻塞。但用户可以调用Winsock的异步函数WSAAsyncSelect把一个Socket规定为非阻塞Socket。当用户用一个非阻塞Socket调用一个会引起阻塞操作的函数时,Winsock执行体总是在启动请求操作以前检查此函数是否可以立即完成其操作。如果Socket执行体不能立即执行完此函数,它将返回一个错误。如果请求的函数不会引起阻塞,此函数将正确执行完。9、使用WSAAsyncSelect函数WSAAsyncSelect函数可以将一个Socket从阻塞的变为非阻塞的。intPASCALFARWSAAsyncSelect(SOCKETs,HWNDhWnd,unsignedintwMsg,longlEvent)8.4.4WinSock编程8.4.4WinSock编程练习题