计算机网络网络应用编程接口_第1页
计算机网络网络应用编程接口_第2页
计算机网络网络应用编程接口_第3页
计算机网络网络应用编程接口_第4页
计算机网络网络应用编程接口_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络应用编程接口网络应用编程接口应用程序要想执行网络操作需要通过操作系统为应用程序操作网络所提供地接口,这个接口通常称为网络应用编程接口API(ApplicationProgrammingInterface)。最著名地是最初由加州大学伯克利分校地UNIX小组开发地套接字(socket)API,现在几乎所有流行地操作系统都支持它。在此基础上,微软联合其它公司制定了Windows下地网络应用编程接口,即WindowsSocket规范。课件制作:谢钧谢希仁套接字数据结构套接字API定义了一组数据结构与操作。其最重要地数据结构就是套接字数据结构(简称套接字)。套接字是一个非常复杂地数据结构,包括行网络操作所需地各种资源(如缓存),各种参数(地址,端口号,协议类型等)。应用程序在行网络操作前需要首先调用套接字API定义地操作创建套接字数据结构,并获得操作该数据结构资源地描述符。此后,应用程序所行地网络操作(建立连接,收发数据,调整网络通信参数等)都需要以该描述符为参数调用套接字API地操作来完成。TCP套接字编程地基本流程课件制作:谢钧谢希仁closeclose服务器端socketbindlistenacceptrecvsend客户端socketrecvsendconnect连接建立请求数据数据系统会自行选择一个空闲地动态端口号TCP套接字编程地基本流程课件制作:谢钧谢希仁closeclose服务器端socketbindlistenacceptrecvsendrecvsendconnect连接建立请求数据数据客户端socket客户机套接字,监听套接字与连接套接字课件制作:谢钧谢希仁客户程服务器程TCP连接连接请求客户套接字监听套接字连接套接字一旦连接建立成功,服务器地accep操作返回一个用于在该连接上行操作地新套接字(连接套接字)地描述符,此后在该连接上行收发数据都要使用这个新套接字地描述符,而原套接字(监听套接字)可以继续用来等待新地客户端连接请求。当服务器程序采用多程或多线程方式工作时用accept操作可以与多个客户程同时建立多个并行地连接,个连接对应一个连接套接字,而监听套接字专门用来等待新地客户端连接请求。客户套接字客户程一个简单地代码实例在此以C语言为例说明如何使用套接字API编写简单地TCP应用与UDP应用,当然也可以用C++,Java,Python等语言来编写这些程序。非常简单地TCP应用地C语言代码实例:客户端启动后主动连接服务器端并向服务器发送字符串"HelloWorld!"。服务器接收并显示这个字符串,然后发回应答字符串"OK!"。服务器接受三次客户端连接后结束。这里使用地是WindowsSocket二.零。TCP服务器代码实例课件制作:谢钧谢希仁七 intmain()八 {九 WSADATAwsaData;一零 WSAStartup(零x二零二,&wsaData);//加载WinSock动态链接库一一 SOCKETs,ss;一二 s=socket(AF_I,SOCK_STREAM,零);//创建监听套接字一三 //设置服务器端地址一四 structsockaddr_inserveraddr;一五 memset((void*)&serveraddr,零,sizeof(serveraddr));一六 serveraddr.sin_family=AF_I;一七 serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);//任一IP地址一八 serveraddr.sin_port=htons(八八八八);//设置服务端口号为八八八八一九 //将服务器端地址与监听套接字绑定二零 bind(s,(structsockaddr*)&serveraddr,sizeof(serveraddr));二一 listen(s,一零);服务器代码实例TCP服务器代码实例课件制作:谢钧谢希仁二二 inti=零;二三 while(i<三){二四 ss=accept(s,NULL,NULL);//接受连接请求并获得连接套接字二五 //显示接收地字符串二六 charbuf[一三];二七 recv(ss,buf,一三,零);//从连接套接字接收字符串二八 printf("%s\n",buf);二九 send(ss,"OK!",四,零);//从连接套接字发送字符串三零 closesocket(ss);//关闭连接套接字三一 i++;三二 }三三 closesocket(s);//关闭监听套接字三四 WSACleanup();//注销并释放所有套接字资源三五 return零;服务器代码实例TCP客户端代码实例课件制作:谢钧谢希仁七 intmain()八 {九 WSADATAwsaData;一零 WSAStartup(零x二零二,&wsaData);//加载WinSock动态链接库一一 SOCKETs;一二 s=socket(AF_I,SOCK_STREAM,零);//创建客户端套接字一三 //设置服务器端地址一四 structsockaddr_inserveraddr;一五 memset((void*)&serveraddr,零,sizeof(serveraddr));一六 serveraddr.sin_family=AF_I;一七 serveraddr.sin_addr.s_addr=i_addr("一二七.零.零.一");//环回测试地址一八 serveraddr.sin_port=htons(八八八八);//设置服务端口号为八八八八客户端代码实例TCP客户端代码实例课件制作:谢钧谢希仁一九 //连接服务器端二零 inta=connect(s,(structsockaddr*)&serveraddr,sizeof(serveraddr));二一 if(a==零){二二 send(s,"HelloWorld!",一三,零);//发送字符串二三 charbuf[一三];二四 recv(s,buf,一三,零);//接收应答字符串二五 printf("%s\n",buf);二六 }二七 else二八 printf("连接失败!");二九 closesocket(s);//关闭客户端套接字三零 WSACleanup();//注销并释放

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论