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. socket listen/accept

    listen函数 摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器,并指定 ...

  2. std::condition_variable(2)复习

    #include <iostream> // std::cout #include <thread> // std::thread, std::this_thread::yie ...

  3. 3 Steps(二分图)

    C - 3 Steps Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement Rng has a ...

  4. Building Shops

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submissi ...

  5. /cloudmonitor.log 主机监控

    989866842 INFO 2018-09-30 01:38:58.58 [ricGatherServiceHttp] 提交指标完成,耗时:18ms. SystemInfo [serialNumbe ...

  6. QChart 如何放大缩小?

    #if 0 //QChart 放大缩小 double z = 1.0; QPoint numDegrees = e->angleDelta()/8; double zi = qAbs(0.1*n ...

  7. Python 中星号作用:解包&打散

    python中’*’和’**’的使用分两个方面,一个是计算,另一个是参数传递过程中元素的打包和解包.  计算方面 ‘*’和’**’在python中最常见的作用分别是‘相乘’和‘乘幂’,如下: > ...

  8. 前端框架之jQuery(二)----轮播图,放大镜

    事件 页面载入   ready(fn)  //当DOM载入就绪可以查询及操纵时绑定一个要执行的函数.   $(document).ready(function(){}) -----------> ...

  9. when you are old

    When you are old william Butler Yeats When you are old and grey and full of sleep And nodding by the ...

  10. C#类型基础(1)

    1.“运行时”要求每个类型最终都从 System.Object 类型派生.Object提供了Equals,GetHashCode,ToString,GetType公共方法,并提供MemberwiseC ...