WINSOCK 传送文件
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 传送文件的更多相关文章
- SZ,RZ传送文件
linux 和window之间通过xshell的命令 SZ,RZ传送文件:
- python使用简单http协议来传送文件
python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...
- Linux SSH 远程操作与传送文件
操作系统:centos 6.5 x64 一.远程连接:在进行linux 的 ssh远程操作前,一定要确认linux 是否安装了 openssh-clients,为了方便起见,一般用yum安装即可:# ...
- 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 ...
- Delphi IdTCPClient IdTCPServer 点对点传送文件
https://blog.csdn.net/luojianfeng/article/details/53959175 2016年12月31日 23:40:15 阅读数:2295 Delphi ...
- ESP8266传送文件设置和操作
问题:ESP8266不能被识别为USB盘,也不能通过串口传送文件,只能通过wifi传送文件,需要事前在串口连接后的repl状态下,用命令行方式配置网络参数,之后才可以用wifi传送文件(webrepl ...
- 【Linux】(2013-7-19)配置tftp与开发板传送文件
1. 安装必须软件 sudo apt-get install -y xinetd tftp-hpa 2. 修改配置文件 vi /etc/default/tftpd-hpa # /etc/default ...
- 利用python传送文件
转:微信公众号李云景(侵删) 很多人传送文件都是使用QQ,微信,百度云,或者其他网盘. 不过都有微信的传输文件有大小的限制,百度云就不说了,想要正常的下载速度反而要充VIP. 我一直推崇大家都学习Py ...
- 通过minicom传送文件的相关配置及使用方法
写一下我使用串口向开发板传送文件中遇到的问题及解决办法: 使用的软硬件环境: 虚拟机:VMware® Workstation 8.0.1 Linux操作系统:Fedora 9 开发板:mini6410 ...
随机推荐
- SharePoint让所有用户访问站点
SharePoint让所有用户访问站点,可用在用户组里面添加:NT AUTHORITY\authenticated users
- 爬虫实战【4】Python获取猫眼电影最受期待榜的50部电影
前面几天介绍的都是博客园的内容,今天我们切换一下,了解一下大家都感兴趣的信息,比如最近有啥电影是万众期待的? 猫眼电影是了解这些信息的好地方,在猫眼电影中有5个榜单,其中最受期待榜就是我们今天要爬取的 ...
- POJ 1039 Pipe【经典线段与直线相交】
链接: http://poj.org/problem?id=1039 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
- float 的先后顺序 理解流
<!DOCTYPE html><html><head><style> p{float:right;}</style></head> ...
- bat masterNodeRun.bat
C:\> compare C:\> compare C:\>D:\cmd\wphp.bat C:\> compareReq -- :: TODO StartScript -- ...
- Axis 调用.net WebServic接口出现:验证消息的安全性时错误发生
解决方法:call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS); 參考:http://www.blogjav ...
- linux 文件和文件夹的ctime,mtime,atime的差别
多了不再赘述,看以下解释 st_atime Time when file data was last accessed. Changed by the f ...
- 1、hive安装详细步骤
一.环境准备 hadoop-2.7.2 java 1.7.0 apache-hive-1.2.1 mysql Hive配置文件介绍 •hive-site.xml hive的配置文件 •hiv ...
- Spring学习笔记5—为Spring添加REST功能
1 关于REST 我的理解,REST就是将资源以最合适的形式在服务端和客户端之间传递. 系统中资源采用URL进行标识(可以理解为URL路径中带参数) 使用HTTP方法进行资源的管理(GET,PUT,P ...
- 字符串之strstr
功能:查找第二个字符串是否存在第一个字符串中. 输入:字符串1,字符串2 返回值:成功返回str1中的位置,失败返回NULL #include <iostream> using names ...