欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    1网络程序设计基本知识课件.ppt

    • 文档编号:7028150       资源大小:626KB        全文页数:173页
    • 资源格式: PPT        下载积分:22文币     交易提醒:下载本文档,22文币将自动转入上传用户(ziliao2023)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要22文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    1网络程序设计基本知识课件.ppt

    1、客户应用程序网络应用程序编程接口TCP/IP 核心协议物理传输介质服务器应用程序网络应用程序编程接口TCP/IP 核心协议物理传输介质图6-1 TCP/IP应用程序工作模型图 程序A基于TCP/IP的网络程序B网络管理软件网络接口卡(NIC)主机A主机B套接口套接口图6-2 套接口示意图 流套接字(SOCK_STREAM):用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议TCP。这类套接字中,传输数据之前必须在两个应用进程之间建立一条通信连接,这就确保了参与通信的两个应用进程都是活

    2、动并且响应的。当连接建立之后,应用进程只要通过套接字向TCP层发送数据流,而另一个应用进程便可以接收到相应的数据流,它们不需要知道传输层是如何对数据流进行处理。特别需要注意的是通信连接必须显式建立。该套接字类型适合传输大量的数据,但不支持广播和多播方式。原始套接字(原始套接字(SOCK_RAW):与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包流套接字只能读取TCP的数据数据报套接字只能读取UDP的数据。使用原始套接字的主要目的是为了避开TCP/IP处理机制,被传送的数据包可以被直接传送给需要它的应用程序。因此,其主要是在编

    3、写自定义底层协议的应用程序时使用,例如各种不同的TCP/IP实用程序(如ping和arp)都使用原始套接字实现,也可以用来实现数据包捕捉分析等。/其他代码WORD wVersionRequested;WSADATA wsaData;wVersionRequested=MAKEWORD(2,2);if(WSAStartup(wVersionRequested,&wasData)!=0)在Winsock 2中提供的该函数的扩展格式如下:SOCKET WSASocket(int af,int type,int protocol,LPWSAPROTOCOL_INFO lpProtocolInfo,Gr

    4、oup g,int iFlags );表6-1 套接口参数 协议 地址族 套接口类型 套接口类型使用的值 协议字段 TCP SOCK_STREAM IPPROTO_TCP UDP SOCK_DGRAM IPPROTO_UDP 互联网协议(IP)AF_INET Raw sockets SOCK_RAW IPPROTO_RAW IPPROTO_ICMP 表6-2 IP地址和端口的几种设置方式IP 地址参数 端口参数 含 义 bind()使用说明 INADDR_ANY 非 0 IP 地址由系统内核自动指定 可用于只有一个 IP 地址的服务器端 bind()调用中 INADDR_ANY 0 IP 地址

    5、和端口号都由系统内核自动指定 这种方式常用于客户端的 bind()调用中 指定本地 IP 地址 非 0 IP 地址和端口号都由bind()函数中的参数指定 这种方式常用于主机有多个 IP 地址的服务器端 bind()调用中 指定本地 IP 地址 0 端口号由内核自动指定 用于客户端 bind()调用中 struct sockaddr u_short sa_family;char sa_data14;struct in_addr union struct u_char s_b1,s_b2,s_b3,s_b4;S_un_b;struct u_short s_w1,s_w2;S_un_w;u_lon

    6、g S_addr;S_un;几个结构:服务器程序实例#include void main(void)WSADATA wsaData;SOCKET ListeningSocket;SOCKET NewConnection;SOCKADDR_IN ServerAddr;SOCKADDR_IN ClientAddr;int Port=5150;/Initialize Winsock version 2.2 WSAStartup(MAKEWORD(2,2),&wsaData);ListeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);ServerA

    7、ddr.sin_family=AF_INET;ServerAddr.sin_port=htons(Port);ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);bind(ListeningSocket,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr);listen(ListeningSocket,5);int ClientAddrLen=sizeof(ClientAddr);NewConnection=accept(ListeningSocket,(SOCKADDR*)&ClientAddr,&ClientAddrLen

    8、);closesocket(NewConnection);closesocket(ListeningSocket);WSACleanup();客户机程序实例#include void main(void)WSADATA wsaData;SOCKET s;SOCKADDR_IN ServerAddr;int Port=5150;WSAStartup(MAKEWORD(2,2),&wsaData);s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);ServerAddr.sin_family=AF_INET;ServerAddr.sin_port=htons(Por

    9、t);ServerAddr.sin_addr.s_addr=inet_addr(136.149.3.29);connect(s,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr);closesocket(s);WSACleanup();在Winsock 2中提供的WSASend()函数的扩展格式是:int WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPW

    10、SAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine );在Winsock 2中提供的WSARecv()函数扩展格式是:int WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPINT lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine );如果有大量数据涌入接收端,滑动窗口大小会被设置为0,

    11、此时不能再发送数据,因此,可能无法一次将所有字节发送出去,要将所有字节发送出去,必须重传剩余字节。char sendbuff2048;int nBytes=2048,nLeft,idx;nLeft=nBytes;idx=0;while(nLeft 0)ret=send(s,&sendbuffidx,nLeft,0);if(ret=SOCKET_ERROR)/Error nLeft-=ret;idx+=ret;发送流示例发送流示例接收流示例接收流示例如果消息长度一样,则比较容易处理。如果消息长度不同,则应用自己的协议通知接收端即将到来的消息长度是多少。char recvbuff1024;int

    12、ret,nLeft,idx;nLeft=512;idx=0;while(nLeft 0)ret=recv(s,&recvbuffidx,nLeft,0);if(ret=SOCKET_ERROR)/Error idx+=ret;nLeft-=ret;接收端实例接收端实例#include void main(void)WSADATA wsaData;SOCKET ReceivingSocket;SOCKADDR_IN ReceiverAddr;int Port=5150;char ReceiveBuf1024;int BufLength=1024;SOCKADDR_IN SenderAddr;in

    13、t SenderAddrSize=sizeof(SenderAddr);WSAStartup(MAKEWORD(2,2),&wsaData);ReceivingSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);ReceiverAddr.sin_family=AF_INET;ReceiverAddr.sin_port=htons(Port);ReceiverAddr.sin_addr.s_addr=htonl(INADDR_ANY);bind(ReceivingSocket,(SOCKADDR*)&ReceiverAddr,sizeof(Receiver

    14、Addr);recvfrom(ReceivingSocket,ReceiveBuf,BufLength,0,(SOCKADDR*)&SenderAddr,&SenderAddrSize);closesocket(ReceivingSocket);WSACleanup();6.5.5 在无连接的套接口上发送数据sendto()或WSASendTo()对于无连接的套接口来说,要从套接口上发送一个数据报,就要使用sendto()函数或WSASendTo()函数。发送端实例发送端实例#include void main(void)WSADATA wsaData;SOCKET SendingSocket

    15、;SOCKADDR_IN ReceiverAddr;int Port=5150;char SendBuf1024;int BufLength=1024;WSAStartup(MAKEWORD(2,2),&wsaData);SendingSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);ReceiverAddr.sin_family=AF_INET;ReceiverAddr.sin_port=htons(Port);ReceiverAddr.sin_addr.s_addr=inet_addr(136.149.3.29);sendto(SendingSoc

    16、ket,SendBuf,BufLength,0,(SOCKADDR*)&ReceiverAddr,sizeof(RecieverAddr);closesocket(SendingSocket);WSACleanup();表6-3 读写关闭方式选择 关闭方式 对应的参数值 说 明 SD_RECEIVE 0 表示不允许再调用接收函数,它关闭读通道。套接口接收缓冲区中的所有数据都被丢失,并且有新数据到达套接口时,也被 TCP 协议层丢失,但它对发送缓冲区没有影响,进程仍然可以在套接口上发送数据 SD_SEND 1 表示不允许再调用发送函数,它关闭写通道。在套接口发送缓冲区中的数据都被发送出去,得到接收端确认之后,就生成一个 FIN 包关闭连接。但它对接收缓冲区没有影响,进程仍然可以在套接口上接收数据 SD_BOTH 2 关闭读写通道,相当于执行了上面 SD_RECEIVE 和 SD_SEND 两个命令


    注意事项

    本文(1网络程序设计基本知识课件.ppt)为本站会员(ziliao2023)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库