实验三 基于TCP和UDP的Socket 编程(2)

实验三 基于TCP和UDP的Socket 编程(2)

ID:41032704

大小:54.00 KB

页数:4页

时间:2019-08-14

实验三 基于TCP和UDP的Socket 编程(2)_第1页
实验三 基于TCP和UDP的Socket 编程(2)_第2页
实验三 基于TCP和UDP的Socket 编程(2)_第3页
实验三 基于TCP和UDP的Socket 编程(2)_第4页
资源描述:

《实验三 基于TCP和UDP的Socket 编程(2)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三基于TCP和UDP的SOCKET编程实验时间:第12、13、14周(6课时)第二部分(2课时):基于UDP的SOCKET编程一、预习要求:(1)TCP服务(2)UDP服务(3)SOCKET套接字二、实验目的:(1)掌握TCP传输中服务端和客户端程序的设计(2)掌握TCP传输中服务端和客户端程序的设计(3)掌握SOCKET套接字的应用三、实验环境:VC++6.0四、实验内容:预备知识:1、套接字(socket)1)为了能方便的开发网络应用软件,由美国伯克利大学在UNIX上推出了一种应用程序访问通信协议的操作系统调用套接字(socket)。2)Socket的出现,

2、使程序员可以很方便的访问TCP/IP,从而开发了各种网络应用程序。3)随着UNIX的应用推广,套接字在编写网络软件中得到了普及,后来套接字又被引进了WINDOWS等操作系统,成为开发网络应用程序的非常有效快捷的工具。2、套接字类型1)流式套接字(SOCK_STREAM),提供面向连接、可靠的数据传输服务,数据无差错、无重复发送,且按发送顺序接收(TCP服务)。2)数据报式套接字(SOCK_DGRAM)提供无连接服务。数据包以独立包形式发送,不提供无错保证,数据可能丢失或重复,并且接受顺序混乱(UDP服务)。3)原始套接字(SOCK_RAW)3、主要相关函数intWS

3、AStartup(WORDwVersionRequested,LPWSADATAlpWSAData);MAKEWORD();intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);intlisten(SOCKETs,intbacklog);SOCKETaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen);intsendto(SOCKETs,constcharFAR*buf,intlen,intflags,conststructsockaddrFAR*to,i

4、nttolen);intrecvfrom(SOCKETs,charFAR*buf,intlen,intflags,structsockaddrFAR*from,intFAR*fromlen);intconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);intclosesocket(SOCKETs);intWSACleanup(void);任务一:创建UDP服务的服务端实验步骤:1)创建一个Win32ConsoleApplication工程(Project),创建一个源文件(C++SourceFile),命名为

5、UdpSrv。2)创建主程序main函数,首先用WSAStartup()函数加载套接字库和版本协商。WORDwVersionRequested;WSADATAwsaData;interr;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);if(err!=0){return;}if(LOBYTE(wsaData.wVersion)!=1

6、

7、HIBYTE(wsaData.wVersion)!=1){WSACleanup();return;}3)利用socket()函数创建

8、一个套接字,同时定义一个SOCKETsockSrv描述符,用来接收socket()函数的返回值。SOCKETsockSrv=socket(AF_INET,SOCK_DGRAM,0);4)定义一个SOCKADDR_IN类型的结构体变量,并进行初始化,然后利用bind()函数将该服务器和套接字绑定。SOCKADDR_INaddrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SO

9、CKADDR*)&addrSrv,sizeof(SOCKADDR));5)定义客户端地址结构变量SOCKADDR_INaddrClient;intlen=sizeof(SOCKADDR);6)接收客户端发送数据,并打印输出。charrecvBuf[100];recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);printf("%s",recvBuf);7)包含下面头文件,同时一个动态链接库文件Ws2_32.lib。#include#include任务二

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。