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. js原型对象中属性被覆盖(1)

    /**   *@author 程无衣   *@description 关于在原型对象中属性被覆盖   */       function Person(){}       Person.prototy ...

  2. js引入方式的弹框方法2

    html代码: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv=& ...

  3. 路径规划 Adjacency matrix 传球问题

    建模 问题是什么 知道了问题是什么答案就ok了 重复考虑 与 重复计算 程序可以重复考虑  但往目标篮子中放入时,放不放把握好就ok了. 集合 交集 并集 w 路径规划 字符串处理 42423 424 ...

  4. php cmd 不能利用$_COOKIE 的处理 通过文件来暂存字符串

    路径 <?php define('CMDPATH', 'wD:\cmd\\'); echo CMDPATH; die(); broswer 路径无问题 w 读 用 <?php $wfile ...

  5. MySQL 第六天

    回顾   外键: 关联关系(表与表之间: 表中字段指向另外一张表的主键) 外键条件: 字段类型必须一致, 存储引擎必须为innodb 外键约束: 子表约束: 不能插入父表不存在的记录 父表约束: 三种 ...

  6. Oracle学习笔记—常用函数

    这里记录一些oracle常用的函数. TO_NUMBER()函数 将字符串类型转换成一个 number 类型的值. SELECT TO_NUMBER('100.00') FROM DUAL; TO_C ...

  7. C#编写图书列表winform

    Book.cs文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  8. Django基础(二)_Ajax、csrf伪站请求

    什么是json? 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子 ...

  9. 异常:Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005.

    异常:Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} ...

  10. iOS 几种常用的 crash log 崩溃信息调试方法

    前言:crash log 对 定位崩溃问题 ,并且不容易复现,尤其是及时对appstore 上正在运营的 app 的迭代改进来说 非常重要. 1 crash两种情况 1.1 测试环境下 追踪bug 1 ...