无连接应用程序丢包率测试/UDP丢包率测试【基于数据报套接字的网络程序设计】

一、无连接应用程序丢包率测试

UDP的不可靠性使得基于该协议的应用程序在数据通信过程中不可避免地会遇到丢包现象。

一方面,网络拥塞导致路由器转发数据报文时丢失;另一方面,慢速设备来不及处理快速到达的数据报文,使得接收缓存溢出而丢包,等等。在应用程序开发前,设计者需要对当前的网络状况和主机性能进行测试,以确定选择哪种协议承载运输、使用循环方式还是并发方式处理网络通信等等,其中丢包率测试是常用的项目,它可以辅助设计者对程序的可靠性进行直观的探测和诊断。

使用数据报套接字编程,在网络功能框架的基础上对回射服务器和客户端进行修改,实现丢包率测试工具。其中,服务器能够接收客户端发来的数据,统计数据报个数;客户端能够根据用户的指示向服务器批量发送数据。丢包率的计算公式如下:

丢包率=1-(服务器收到的报文个数/客户端发送的报文个数)×100%

要求实现接收缓存大小的修改功能,控制接收数据包的速度,能够给服务器在接收缓存
取不同值时丢包率的变化。画出数据表格,并给出分析。

二、UDP 丢包率测试服务端

//丢包率测试,服务器端
#define NETWORK2_2_COMM_H
#define NETWORK2_2_COMM_H
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <inaddr.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")
#define MAXLINE 4096  // 接收缓冲区长度
#define SEVER_PORT 13131  // 
int SETBUFF = 128;  // 设置缓冲区大小
int RECVTIMEOUT = 1; // 设置服务器收包超时时间(ms)
/*套接字初始化*/ 
int StartUp()
{
   
    WORD w_version = MAKEWORD(2, 2);
    WSADATA wsa_data;
    int res = WSAStartup(w_version, &wsa_data);
    if (res != 0)
    {
   
    	printf("WSAStartup Error:%d\n",WSAGetLastError());
        return -1;
    }//版本号错误 
    if (LOBYTE(wsa_data.wVersion) != 2 || HIBYTE(wsa_data.wVersion) != 2)
    {
   
       	printf("WSAStartup Error:%d\n",WSAGetLastError());
        WSACleanup();
        return -1;
    }

    return 0; //成功返回0 
}
/*释放资源*/ 
int cleanUp()
{
   
    int res = WSACleanup();
    if (res == SOCKET_ERROR)
    {
   
    	printf("WSACleanup Error:%d",WSAGetLastError()); 
        return -1;
    }
    return 0;
}
/*断开连接,释放资源*/ 
int closeConn(SOCKET sock_conn)
{
   
    int res = closesocket(sock_conn); //关闭连接
    if (res == SOCKET_ERROR)
    {
   
    	printf("关闭连接失败%d\n",WSAGetLastError());
        return -1;
    }
    res = cleanUp();
    return res;
}
/*服务器初始化*/ 
SOCKET udpServerInit(int port)
{
   
    int res = -1;
    SOCKET sock_listen;
    const int on = 1;

    // 绑定地址、端口
    struct sockaddr_in server_addr;
    memset(&server_addr,</
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20230921

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值