性能测试脚本SocketUDP协议.docx

性能测试脚本SocketUDP协议.docx

ID:57437384

大小:76.82 KB

页数:11页

时间:2020-08-16

性能测试脚本SocketUDP协议.docx_第1页
性能测试脚本SocketUDP协议.docx_第2页
性能测试脚本SocketUDP协议.docx_第3页
性能测试脚本SocketUDP协议.docx_第4页
性能测试脚本SocketUDP协议.docx_第5页
资源描述:

《性能测试脚本SocketUDP协议.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、性能测试脚本Socket_UDP协议————————————————————————————————作者:————————————————————————————————日期:一.UDP和Socket通信步骤1.UDPServer程序1、编写UDPServer程序的步骤(1)使用socket()来建立一个UDPsocket,第二个参数为SOCK_DGRAM。(2)初始化sockaddr_in结构的变量,并赋值。sockaddr_in结构定义:structsockaddr_in{uint8_tsin_len;sa_family_tsin_family;in_port_tsin_port;str

2、uctin_addrsin_addr;charsin_zero[8];};这里使用“08”作为服务程序的端口,使用“INADDR_ANY”作为绑定的IP地址即任何主机上的地址。(3)使用bind()把上面的socket和定义的IP地址和端口绑定。这里检查bind()是否执行成功,如果有错误就退出。这样可以防止服务程序重复运行的问题。(4)进入无限循环程序,使用recvfrom()进入等待状态,直到接收到客户程序发送的数据,就处理收到的数据,并向客户程序发送反馈。这里是直接把收到的数据发回给客户程序。2、udpserv.c程序内容:#include#include

3、ys/socket.h>#include#include#include#include#defineMAXLINE80#defineSERV_PORT8888voiddo_echo(intsockfd,structsockaddr*pcliaddr,socklen_tclilen){intn;socklen_tlen;charmesg[MAXLINE];for(;;){len=clilen;/*waitingforreceivedata*/n=recvfrom(sockfd,mesg,MAXLINE,0,

4、pcliaddr,&len);/*sentdatabacktoclient*/sendto(sockfd,mesg,n,0,pcliaddr,len);}}intmain(void){intsockfd;structsockaddr_inservaddr,cliaddr;sockfd=socket(AF_INET,SOCK_DGRAM,0);/*createasocket*//*initservaddr*/bzero(&servaddr,sizeof(servaddr));servaddr.sin_family=AF_INET;servaddr.sin_addr.s_addr=htonl(I

5、NADDR_ANY);servaddr.sin_port=htons(SERV_PORT);/*bindaddressandporttosocket*/if(bind(sockfd,(structsockaddr*)&servaddr,sizeof(servaddr))==-1){perror("binderror");exit(1);}do_echo(sockfd,(structsockaddr*)&cliaddr,sizeof(cliaddr));return0;}2.UDPClient程序1、编写UDPClient程序的步骤(1)初始化sockaddr_in结构的变量,并赋值。这里使用

6、“8888”作为连接的服务程序的端口,从命令行参数读取IP地址,并且判断IP地址是否符合要求。(2)使用socket()来建立一个UDPsocket,第二个参数为SOCK_DGRAM。(3)使用connect()来建立与服务程序的连接。与TCP协议不同,UDP的connect()并没有与服务程序三次握手。上面我们说了UDP是非连接的,实际上也可以是连接的。使用连接的UDP,kernel可以直接返回错误信息给用户程序,从而避免由于没有接收到数据而导致调用recvfrom()一直等待下去,看上去好像客户程序没有反应一样。(4)向服务程序发送数据,因为使用连接的UDP,所以使用write()来替代

7、sendto()。这里的数据直接从标准输入读取用户输入。(5)接收服务程序发回的数据,同样使用read()来替代recvfrom()。(6)处理接收到的数据,这里是直接输出到标准输出上。2、udpclient.c程序内容:#include#include#include#include#include

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

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

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