win32 tcp文件传输客户端
来源:互联网 发布:php 判断是否ajax请求 编辑:程序博客网 时间:2024/05/19 02:21
#include<stdio.h>#include <stdlib.h>#include <winsock2.h>#include <string.h>#pragma comment(lib,"ws2_32.lib")#define PORT 9999#define IPADDR "127.0.0.1"#define BACKLOG 20#define FILENAME 200#define LENGTH 200#define BUFFERSIZE 1024struct FILEHEAD //FILE-head struct{char filename[LENGTH];//file name//char ext[LENGTH];unsigned int length;//the byte of the file};struct FILEDATA //FILE-data struct{char filename[LENGTH];//file namechar package[BUFFERSIZE];//package dataunsigned int length;//the byte of the fileunsigned int index;//index of the package};void getFileInformation(FILEHEAD file){printf( "file information :\n" );printf( " Filename: %s\n", file.filename );//printf( " Ext: %s\n", file.ext );printf( " length is btye: %ld btye\n", file.length );}int main(int argc, char *argv[]){FILEHEAD filehead;FILEDATA filedata;WSADATA wsadata;WSAStartup(MAKEWORD(2,0),&wsadata);SOCKET sock_trans=socket(AF_INET,SOCK_STREAM,0);memset(&filehead,0,sizeof(filehead));memset(&filedata,0,sizeof(filedata));if (0==sock_trans){printf ("socket build faile!!\n");exit(1);}printf ("target pc's IP address: 127.0.0.1\n");printf("输入文件名(包括路径):\n");scanf("%s",filehead.filename);//如果正式调试,将服务器端ip写死。SOCKADDR_IN sockadd;sockadd.sin_family=AF_INET;sockadd.sin_port=htons(PORT);sockadd.sin_addr.S_un.S_addr=inet_addr(IPADDR);int con_info=connect(sock_trans,(SOCKADDR*)&sockadd,sizeof(sockadd));if (SOCKET_ERROR==con_info){printf ("connect fail!\n");exit(1);}//Sleep(100);FILE *fp= NULL;fp=fopen(filehead.filename,"rb");if (NULL==fp){printf("cannot open the %s \n",filehead.filename);exit(1);}fseek(fp,0l,SEEK_END);//此处将fp移到了文件末尾,要移动回去,不然读文件总是零filehead.length=ftell(fp);fseek(fp,0l,SEEK_SET);//将文件指针移动回头部char ext[LENGTH]={0};_splitpath(filehead.filename, NULL, NULL, filehead.filename, ext);//分割文件名strcat(filehead.filename,ext);strcpy(filedata.filename,filehead.filename);getFileInformation(filehead);//setFileInformation();//freed_return_val=fread(buf,1,1024,fp);//读文件字符//char buf[BUFFER];int fread_return_val=0;//文件读出字符的返回值Sleep(3000);//发送文件头信息printf("发送文件头信息...\n");send(sock_trans,(char *)&filehead,sizeof(filehead),0);//char buf[BUFFERSIZE]={0};filedata.index=0;printf("发送文件信息...\n");while (1){fread_return_val=fread(filedata.package,1,BUFFERSIZE,fp);//fread_return_val=fread(buf,1,BUFFERSIZE,fp);if (0==fread_return_val){break;}filedata.index++;send(sock_trans,(char *)&filedata,sizeof(filedata),0);//send(sock_trans,buf,BUFFERSIZE,0);printf("第%d块发送完成!\n",filedata.index);}fclose(fp);closesocket(sock_trans);WSACleanup();printf("\n发送文件完成...\n");system("pause");return 0;}
- win32 tcp文件传输客户端
- win32 tcp文件传输并发服务器
- TCP socket多客户端文件传输
- win32 TCP网络文件传输服务器端1.23
- TCP文件传输
- TCP 文件传输
- 【Java源码】TCP协议之服务端与客户端文件传输
- (TCP模式)客户端与服务器之间的文件传输
- 文件传输 客户端
- 【转】win32平台TCP网络通信模块客户端
- TCP 协议文件传输示例
- TCP 协议文件传输示例
- Java TCP 文件传输问题
- TCP协议实现文件传输
- 基于TCP的文件传输
- TCP协议实现文件传输
- TCP实现文件传输
- linux TCP文件传输
- CODE COMPLETE NOTES 代码大全笔记 (SOFTWARE CONSTRUCTION)软件构建
- android自动更新新版模块(简单,实用)
- 一个ffserver的测试配置文件
- wince6.0 内存泄漏检测实践
- 有关WebView开发问题 .
- win32 tcp文件传输客户端
- java基础学习笔记之十--反射(1)
- [field:global name=autoindex/]有规律变换的应用,今天总结一下
- 更新内容,调用两个模板
- cadence 元件之二极管
- vs2008 复制窗体产生错误 .resources”在“Resources”参数中指定了多次。“Resources”参数不支持重复项。
- 感觉这段代码不错;收藏啦
- MySQL配置文件my.cnf(my.ini) 详细解析
- List 的remove 返回值的理解 来自百度知道