// Client.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <ostream>
#include <iostream>
#include <Winsock2.h>
#include <fstream>
#include <string>
using namespace std;
#pragma comment(lib,"WS2_32.LIB")
/*struct msg_file
{
int nstart;
int nsize;
char szbuff[1024-2*sizeof(int)];
}tfile;*/
void main()
{// SOCKET socket1;
//InitWinsock();
WORD wVersionRequested;//用来指明Socket的版本号
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);//低位内存存储主版本号1,高位内存存储副版本号1,其值为000100000001
err=WSAStartup(wVersionRequested,&wsaData);//开始初始化socket环境,如果返回值为0,则初始化成功。
if (err!=0)
{
return;
}
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)//判定当前的socket版本类型
{
WSACleanup();
return;
}
sockaddr_in client;//定义发送端的数据包地址的结构变量server
int len =sizeof(client);
client.sin_family=AF_INET;//server中的网路地址族
client.sin_port=htons(27015); //server的监听端口
//一般小于1024端口为保留的端口,在一些操作中不能随便使用,所以建议使用大于1024的端口
client.sin_addr.s_addr=inet_addr("192.9.201.10"); ///server的地址
cout<<"开始为发送数据创建一个套接字(SOCKET)"<<endl;
SOCKET socketSvr=socket(AF_INET,SOCK_DGRAM,0);
ifstream fin;
char *buffer;
long length;
int i=0;
int a;
int max_per_send=1024;
buffer = new char [max_per_send];
fin.open("2.hex",ios::in|ios::ate|ios::binary);
int f_length=fin.tellg();
while(1)
{
length = f_length;
fin.seekg (0, ios::beg);
int i=0;
int total_sent=0;
cout<<"Wait for sending..."<<endl;
getchar();
cout<<"sending..."<<endl;
while(length)
{
if (length>=max_per_send) i = max_per_send;
else i = length;
fin.read(buffer,i);
a= sendto(socketSvr,buffer,i,0,(sockaddr*)&client,sizeof(client));
total_sent += i;
if(i<max_per_send)
{
cout<<"Last Sent:"<<a<<endl;
cout<<"Total Sent:"<<total_sent<<endl;
}
length -= i;
}
}
fin.close();
closesocket(socketSvr);
WSACleanup();
return;
}
/* if (length>1024)
{
for (i;i<=length;i+=1024)
{
if(i+1024>length)
{
memcpy(buffer,'\0',1024);
fin.read(buffer,length-i);
cout<<"length-i"<<length-i<<endl;
cout<<buffer<<endl;
int a=sendto(socketSvr,buffer,length-i,0,(sockaddr*)&client,sizeof(client));
cout<<a<<endl;
}
else
{
fin.read(buffer,1024);
sendto(socketSvr,buffer,1024,0,(sockaddr*)&client,sizeof(client));
}
}*/
使用UDP协议对文件(TXT,hex,gif。bmp等文件的)的完整发送和接收
4星 · 超过85%的资源 需积分: 50 188 浏览量
2012-08-10
20:45:04
上传
评论 5
收藏 3KB RAR 举报
firegoing12
- 粉丝: 0
- 资源: 1
最新资源
- Springboot开发-将springboot与mongodb数据库相结合.zip
- 基于深度学习图像分割Unet的肿瘤区域识别辅助诊断系统python源码(高分项目).zip
- 基于ssm+jsp的母婴用品网站+数据库(毕业设计,包括源码,教程).zip
- Android简单的页面启动器,不用再使用onActivityResult来取得返回值 Kotlin + androidx 实现
- 基于深度学习图像分割Unet的肿瘤区域识别辅助诊断系统python源码(含模型构建、后端架设和前端访问功能).zip
- 各种fortran代码
- Springboot开发-使用springboot实现发邮件功能.zip
- Java SSM 生鲜果蔬电商系统【优质毕业设计分享】.rar
- 20、Java SSM 生鲜果蔬电商系统【优质毕业设计分享】.rar
- Python桌面应用开发图书信息管理系统 应用Python开发,基于最新的QT6桌面开发 用于本科专科阶段毕设模板
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈