[计算机软件及应用]网络编程基础.ppt

[计算机软件及应用]网络编程基础

本讲内容 我们应当从多个层面来理解套接字这个概念的内涵。 从套接字所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议栈进行通信的接口,是应用程序与网络协议栈进行交互的接口。 从使用的角度来讲,对于套接字的操作形成了一种网络应用程序的编程接口(API)。包括一组操作套接字的系统调用,或者是库函数。应用程序可以使用这些系统调用构造套接字,安装绑定套接字,通过套接字交换数据以及关闭套接字等。 (4)双方必须使用相同的语言进行通话。这一条看似有些多余,但如果真的一个说汉语、另一个却说英语,那也是没有办法正常沟通的。 (5)在通话过程中,物理线路必须保持通畅,否则电话将会被挂断。 (6)在通话过程中,任何一方都可以主动挂断电话。 (2)服务器应用程序必须早于客户端应用程序启动,并在指定的IP地址和端口上执行监听操作。 如果该端口被其他应用程序所占用,则服务器应用程序无法正常启动。服务器处于监听状态就类似于电话接通电话线、等待拨打的状态。 (3)客户端在申请发送数据时,服务器端应用程序必须有足够的时间响应才能进行正常通信。否则,就好像电话已经响了,但却无人接听一样。 在通常情况下,服务器应用程序都需要具备同时处理多个客户端请求的能力,如果服务器应用程序设计得不合理或者客户端的访问量过大,都有可能导致无法及时响应客户端的情况。 (4)使用Socket协议进行通信的双方还必须使用相同的通信协议,Socket支持的底层通信协议包括TCP和UDP两种。 在通信过程中,双方还必须采用相同的字符编码格式,而且按照双方约定的方式进行通信。这就好像在通电话的时候双方都采用对方能理解的语言进行沟通一样。 (5)在通信过程中,物理网络必须保持畅通,否则通信将会中断。 (6)通信结束后,服务器端和客户端应用程序都可以中断它们之间的连接。 套接字的应用场合 什么时候使用套接字来编程呢? 并不是所有的网络应用程序都需要使用套接字编程的。套接字适用于开发一些新的网络应用,这类应用有如下特点: (1)不管是采用P2P模式或C/S模式,通信双方的应用程序都需要开发; (2)双方所交换数据的结构和交换数据的顺序有特定的要求,不符合现在已经成熟的应用层协议。 #else unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; #endif } WSADATA, FAR * LPWSADATA; 网络应用程序要在不同的计算机中运行,主机字节顺序是不同的,但是,网络字节顺序是一定的。 所以,应用程序在编程的时候,在把IP地址和端口号装入套接字的时候,应当把它们从本机字节顺序转换为网络字节顺序;相反,在本机输出时,应将它们从网络字节顺序转换为本机字节顺序。 ntohl() 长整数网络顺序转化为本机顺序,用于IP地址。 ntohs() 短整数网络顺序转换为本机顺序,用于端口号。 这四个函数将被转换的数值作为函数的参数,函数返回值是转换后的结果。 Winsock 的信息查询函数 Winsock还提供了一组信息查询函数,使用户能方便地获取套接口所需要的网络地址信息以及其它信息。 5.3 WinSock编程基础 5.3.1 构建WinSock应用程序框架 5.3.2 IP地址的表示形式 1. 初始化函数WSAStartup() Winsock 应用程序要做的第一件事,就是必须首先调用WSAStartup()函数对Winsock进行初始化。初始化也称为注册。注册成功后,才能调用其他的Winsock API函数。 Winsock的注册与注销 在一台计算机中,使用同一Windock实现的多个网络应用程序 WSAStartup()函数 int WSAStartup( IN WORD wVersionRequested, OUT LPWSADATA lpWSAData ); ? 参数说明如下: wVersionRequested,

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档