SERVER:

// send_server.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib") int main(int argc,char** argv)
{
WSADATA wsadata;
if (WSAStartup(MAKEWORD(2,2),&wsadata) == -1)
{
printf("wsastartup error\r\n");
} SOCKET server;
server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (server == SOCKET_ERROR)
{
printf("server socket start error\r\n");
return 0;
} sockaddr_in server_service;
server_service.sin_family = AF_INET;
server_service.sin_port = htons(8000);
server_service.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); if (bind(server,(sockaddr*)&server_service,sizeof(server_service)) == SOCKET_ERROR)
{
printf("Bind Port error\r\n");
return 0;
} if (listen(server,5) == SOCKET_ERROR)
{
printf("Listen client error\r\n");
return 0;
} SOCKET acceptsocket;
printf("wait accept recv data\r\n");
while (1)
{
acceptsocket = SOCKET_ERROR;
while (acceptsocket == SOCKET_ERROR)
{
acceptsocket = accept(server,NULL,NULL); }
printf("Client connetcd\r\n");
server = acceptsocket;
break;
} char sendbuf[1024] = {0};
DWORD dwread;
BOOL bret;
char filename[] = "test.exe";
HANDLE hfile = CreateFileA(filename,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
while (true)
{
bret = ReadFile(hfile,sendbuf,1024,&dwread,NULL);
if (bret == false)
{
printf("read file error\r\n");
break;
}
else if (dwread == 0)
{
printf("send file ok");
break;
}else
{
send(server,sendbuf,dwread,0);
}
}
CloseHandle(hfile);
WSACleanup();
return 0;
}

  

CLIENT:

// send_client.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <stdio.h>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib") int main()
{
WSADATA wsadata;
int iResult = WSAStartup(MAKEWORD(2,2),&wsadata);
if (iResult != NO_ERROR)
{
printf("Errpr at wsastartup\r\n");
}
SOCKET client;
client = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (client == INVALID_SOCKET)
{
printf("error at socket():%ld\r\n",WSAGetLastError());
WSACleanup();
return 0;
} sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_port = htons(8000);
clientService.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); if (connect(client,(SOCKADDR*)&clientService,sizeof(clientService)) == SOCKET_ERROR)
{
printf("Faied to error\r\n");
WSACleanup();
return 0;
} char recvbuf[1024] = {0};
int read;
DWORD dwWrite;
BOOL bRet;
char filename[] = "test.exe";
HANDLE hfile = CreateFileA(filename,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0); while (true)
{
read = recv(client,recvbuf,1024,0);
if (read ==-1)
{
break;
}
bRet = WriteFile(hfile,recvbuf,read,&dwWrite,NULL); if (bRet == FALSE)
{
MessageBoxW(NULL,_T("Write buffer error\r\n"),NULL,MB_OK);
}
}
MessageBoxW(NULL,_T("write buffer susccess\r\n"),NULL,MB_OK);
return 0;
}

在发送文件之前,我们可以利用getfilesize来获取文件打开的大小。

WINSOCK 传送文件的更多相关文章

  1. SZ,RZ传送文件

    linux 和window之间通过xshell的命令 SZ,RZ传送文件:

  2. python使用简单http协议来传送文件

    python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...

  3. Linux SSH 远程操作与传送文件

    操作系统:centos 6.5 x64 一.远程连接:在进行linux 的 ssh远程操作前,一定要确认linux 是否安装了 openssh-clients,为了方便起见,一般用yum安装即可:# ...

  4. SCP传送文件时提示No ECDSA host key is known forx.x.x.x and you have requested strict checking.问题的解决办法

    在使用SCP向其他设备传送文件时,打印如下错误: No ECDSA host key is known for x.x.x.x and you have requested strict checki ...

  5. Delphi IdTCPClient IdTCPServer 点对点传送文件

    https://blog.csdn.net/luojianfeng/article/details/53959175 2016年12月31日 23:40:15 阅读数:2295 Delphi     ...

  6. ESP8266传送文件设置和操作

    问题:ESP8266不能被识别为USB盘,也不能通过串口传送文件,只能通过wifi传送文件,需要事前在串口连接后的repl状态下,用命令行方式配置网络参数,之后才可以用wifi传送文件(webrepl ...

  7. 【Linux】(2013-7-19)配置tftp与开发板传送文件

    1. 安装必须软件 sudo apt-get install -y xinetd tftp-hpa 2. 修改配置文件 vi /etc/default/tftpd-hpa # /etc/default ...

  8. 利用python传送文件

    转:微信公众号李云景(侵删) 很多人传送文件都是使用QQ,微信,百度云,或者其他网盘. 不过都有微信的传输文件有大小的限制,百度云就不说了,想要正常的下载速度反而要充VIP. 我一直推崇大家都学习Py ...

  9. 通过minicom传送文件的相关配置及使用方法

    写一下我使用串口向开发板传送文件中遇到的问题及解决办法: 使用的软硬件环境: 虚拟机:VMware® Workstation 8.0.1 Linux操作系统:Fedora 9 开发板:mini6410 ...

随机推荐

  1. &#x编码转换成汉字

    import java.io.UnsupportedEncodingException; public class UnicodeDecoder { public static String esca ...

  2. 剖析与优化 Go 的 web 应用

    https://mp.weixin.qq.com/s/HDsbZLOK3h8-XjejvPH2sA https://studygolang.com/articles/12685

  3. JavaScript通过preventDefault()使input[type=text]禁止输入但保留光标

    一.说明 取消事件的默认动作. 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 "submit",在事件传播的任意阶段 ...

  4. Java内存模型之happens-before

    转载自    http://www.cnblogs.com/chenssy/p/6393321.html 无论处理器.JVM.编译器都会都保证程序正确的前提下尽可能的对指令执行效率进行优化,进行指令重 ...

  5. ES6学习笔记(一)——let和const

    1.ES6学习之let.const (1).var.let.const 变(常)量声明 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 在ES6中let就诞生了,实际上它 ...

  6. ffmpeg参数使用说明1

    1.     ffmpeg.exe -i F:闪客之家闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:11.flv 2.     ffmpeg ...

  7. STL中的二分查找——lower_bound 、upper_bound 、binary_search

    STL中的二分查找函数 1.lower_bound函数 在一个非递减序列的前闭后开区间[first,last)中.进行二分查找查找某一元素val.函数lower_bound()返回大于或等于val的第 ...

  8. 开机提示memory size decreased怎么办?

    ytkah的办公电脑实在是hold不住,win7用2G的内存,基本是在等待中度过的,没有新的只能考虑加格内存了,采购嘛,需走一大堆流程,跟领导请示从其他硬件需求不是很高的电脑那边拔一根内存条吧,小C的 ...

  9. Quartz使用总结(转发:http://www.cnblogs.com/drift-ice/p/3817269.html)

    Quartz可以用来做什么? Quartz是一个任务调度框架.比如你遇到这样的问题 想每月25号,信用卡自动还款 想每年4月1日自己给当年暗恋女神发一封匿名贺卡 想每隔1小时,备份一下自己的爱情动作片 ...

  10. Kafka配置参数说明

    配置文件目录:/usr/local/kafka/config配置文件server.propertis参数说明:broker.id=0每一个broker在集群中的唯一标识,要求是正数,当该服务器的IP地 ...