资源简介
1、利用数据报套接字编写回射服务器和客户端。
2、使用类的形式封装服务器和客户端的网络功能框架,提高程序的适用性。
3、在编程框架的基础上扩展程序功能,测试网络丢包率。
代码片段和文件信息
// UdpClient.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
#include
#include
#pragma comment(lib“WS2_32.lib“)
#define BUF_SIZE 1024
int _tmain(int argc _TCHAR* argv[])
{
//声明变量
WSADATA wsaData;
SOCKET Socket;
SOCKADDR_IN RecvAddr;
SOCKADDR_IN SendAddr;
int port = 27015;
char buf[BUF_SIZE];
char ip[BUF_SIZE];
int SendAddrSize = sizeof(SendAddr);
//初始化Socket环境
if(WSAStartup(MAKEWORD(22)&wsaData) != 0)
{
printf(“WSAStartup failed !\n“);
return -1;
}
//创建用于监听的Socket
Socket = socket(AF_INETSOCK_DGRAMIPPROTO_UDP);
if(INVALID_SOCKET == Socket)
{
printf(“socket failed !\n“);
WSACleanup();
return -1;
}
//设置服务器Socket地址
printf(“Please input server IP! “);
std::string ServerIP;
std::getline(std::cinServerIP);
strcpy_s(ipServerIP.c_str());
//设置服务器Socket地址
RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(port);
RecvAddr.sin_addr.S_un.S_addr = inet_addr(ip);
//向服务器发送信息,并接收回射信息
while(true){
printf(“Please input a string to send UDP: “);
std::string str;
std::getline(std::cinstr);
ZeroMemory(bufBUF_SIZE);
strcpy_s(bufstr.c_str());
//向服务器发送信息
int retVal = sendto(SocketbufBUF_SIZE0(SOCKADDR*)&RecvAddrsizeof(RecvAddr));
if(SOCKET_ERROR == retVal)
{
printf(“recv failed !\n“);
break;
}
ZeroMemory(bufBUF_SIZE);
//接收服务器回射信息
retVal = recvfrom(SocketbufBUF_SIZE0(SOCKADDR*)&SendAddr&SendAddrSize);
if(SOCKET_ERROR == retVal)
{
printf(“recv failed !\n“);
break;
}
//如果收到“quit”,则客户端退出,否则显示回射信息
if(strcmp(buf“quit“) == 0)
{
printf(“quit!\n“);
break;
}
printf(“Recv From Server UDP: %s\n“buf);
}
//释放Socket
printf(“Closing socket. UDP\n“);
closesocket(Socket);
WSACleanup();
//暂停,按任意键退出
system(“pause“);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 543 2012-10-11 21:09 Readme.txt
文件 556032 2012-12-01 10:01 基于数据报套接字的回射程序设计与实验.doc
文件 48128 2012-10-11 20:38 exe\UdpClient.exe
文件 51712 2012-10-11 20:45 exe\UdpClientfr
文件 30208 2012-10-11 20:42 exe\UdpServer.exe
文件 31232 2012-10-11 20:56 exe\UdpServerfr
文件 2025 2012-10-11 20:37 src\UdpClient.cpp
文件 3058 2012-10-11 20:46 src\UdpClient.h
文件 242 2012-10-11 20:46 src\UdpClientfr
文件 2420 2012-10-11 20:49 src\UdpServer.cpp
文件 3479 2012-10-11 21:00 src\UdpServer.h
文件 230 2012-10-11 20:57 src\UdpServerfr
文件 3686 2012-10-12 20:47 丢包率测试程序和代码\UdpClient.h
文件 464 2012-10-12 21:22 丢包率测试程序和代码\UdpClientfr
文件 57344 2012-10-12 21:01 丢包率测试程序和代码\UdpClientfr
文件 4621 2012-10-12 21:16 丢包率测试程序和代码\UdpServer.h
文件 262 2012-10-12 20:11 丢包率测试程序和代码\UdpServerfr
文件 33280 2012-10-12 21:10 丢包率测试程序和代码\UdpServerfr
目录 0 2012-10-11 21:08 exe
目录 0 2012-10-12 21:22 src
目录 0 2012-10-12 21:23 丢包率测试程序和代码
----------- --------- ---------- ----- ----
828966 21
相关资源
- 操作系统实验报告-文件系统
- 3种不同语言的BP算法
- 冒险岛吸怪无敌 源码
- API函数大全(中文)
- Robocup2d的官方说明书
- 点云数据ply格式
- 《unix网络编程》源代码
- 图像亮度调整源代码
- 高斯平滑源代码
- 点云pcd与txt之间的转换
- 分层建立多叉树及分层遍历输出
- linux网络编程聊天工具代码
- 支持向量机libsvm-2.88(最新版
- 简单多边形的屋脊线计算算法
- 十字链表的定义及实现
- 基于QT的P2P共享文件系统
- linux下C 网络编程
- Qt 获取exe版本名称,描述等详细信息
- tcp协议简单的聊天程序Console
- VS2010求值MD5的代码
- A*全局路径规划器ros
- SWMM51014代码编译及扩展案例182387
- conio.h头文件
- 栈溢出攻击技术
- Qt5主窗体:文本编辑器
- CMake 完整入门教程
- RAD Studio 10.3.1 4899 keygen
- 英文字典 中国地质大学数据结构A上机
- 南京邮电大学实验一真值表法求主析
- 利用栈求表达式的值
评论
共有 条评论