资源简介
基于winsock文件传输的C++文件传输实现,TCP/IP协议,服务端和客户端都有,简单易学
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
#pragma comment(lib“ws2_32.lib“)
#define DEFAULT_PORT “2222“
#define DEFAULT_ADDRESS “127.0.0.1“
void showHelp();
int clientDirFun(SOCKET);
int clientGetFun(SOCKET s char* char*);
int clientPutFun(SOCKET s char* char*);
void HandleError(SOCKET s int ret);
int sstream2char(stringstream& char*);
int connectServer(SOCKET sockaddr_in);
int main(int argc char** argv)
{
puts(“----------------------------------------------“);
printf(“usage: client [server ip] [server port] [work path]\n“);
printf(“‘?‘ to get command info\n“);
struct sockaddr_in clientAddr;
struct sockaddr_in serverAddr;
WSADATA wsdata;
SOCKET serversocket;
char input1[10] = {0};
char input2[40] = {0};
char sendbuf[80] = {0};
char recvbuf[80] = {0};
char path[256] = {0};
string line;
FILE *testFile = NULL;
if(WSAStartup(MAKEWORD(22) &wsdata) != 0)
{
WSACleanup();
cerr<<“WSAStartup() failed!/n“;
}
serversocket = socket(AF_INET SOCK_STREAM IPPROTO_TCP);
if(serversocket<0)
cerr<<“socket() failed!/n“;
serverAddr.sin_family = AF_INET;
if(argc < 3)
{
serverAddr.sin_port = htons(atoi(DEFAULT_PORT));
serverAddr.sin_addr.s_addr = inet_addr(DEFAULT_ADDRESS);
}
else
{
serverAddr.sin_port = htons(atoi(argv[2]));
serverAddr.sin_addr.s_addr = inet_addr(argv[1]);
}
if(argc == 4)
{
strcat(path argv[3]);
strcat(path “\\“);
}
if(connectServer(serversocket serverAddr) != 0)
{
cin.get();
return 1;
}
while(true)
{
cout<<“ftp> “;
cin.sync();
getline(cin line);
if(line == ““)
continue;
stringstream linebuf;
linebuf< sstream2char(linebuf input1);
if(!strcmp(input1 “?“))
{
showHelp();
continue;
}
else if(!strcmp(input1 “quit“))
break;
else if(!strcmp(input1 “dir“))
{
clientDirFun(serversocket);
continue;
}
else if(!strcmp(input1 “re“))
{
if(connectServer(serversocket serverAddr) != 0)
cin.get();
continue;
}
else if(sstream2char(linebuf input2) != -1)
{
if(input2[0] != ‘\0‘)
{
char filePath[256] = {0};
if(path!=““)
strcat(filePath path);
strcat(filePath input2);
if(!strcmp(input1 “get“))
{
if((testFile = fopen(filePath “r“)) != NULL)
{
fclose(testFile);
char ans = 0;
while(ans != ‘Y‘ && ans != ‘y‘ && ans != ‘N‘ && ans != ‘n‘)
{
printf(“File %s already exists. Overwrite? Y/N “
input2);
cin>>ans;
}
if(ans == ‘Y‘ || ans == ‘y‘)
HandleError(serversocket
clientGetFun(serversocket path input2));
cout< continue;
}
else
{
HandleError(serversocket
clientGetFun(serversocket path input2));
continue;
}
}
else if(!strc
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4877 2015-01-04 21:20 server.cpp
文件 7206 2015-01-07 23:43 client.cpp
----------- --------- ---------- ----- ----
12083 2
相关资源
- linux系统下C语言实现带有图形界面的
- MFC socket通信,socket通讯
- segy文件读取C++源码
-
MFC、DOM实现的xm
l文件解析、修改和 - 参考资料\\C++获取MP3文件信息.doc
- socket通信MFC版本
- Qt-C++实现文件浏览器
- C语言socket编程指南(讲解+)
- c++ MFC实现文件合成器功能,实现多种
- c++头文件大全,很全哦,
- 多用户多级目录文件系统的实现源.
- VS2010C++调用python报错无法打开包括文
- Linux文件模拟器
- 基于MFC OpenGL读取obj文件并以双视图显
- 学生社团管理系统数据结构课程设计
- Pthread 多线程C++动态库+静态库+头文件
- palm 手掌检测的训练文件
- VC++的.cpp文件调用CUDA的.cu文件中的函
- c语言之汉诺塔无限关卡游戏文件密码
- 基于哈夫曼编码的文本文件压缩与解
- C实现基于Socket实现自定义协议通信
- MFC按行读取txt文件,以空格分隔字符
- MFC:Socket编程—TCP服务端和多个客户
- ABB机器人的socket通信UDPRapid代码
- SAMBA方式读取局域网共享文件BCB6.0
- matlab2016b vs2017编译器补丁文件
- mfcc,,可输入自己的wav文件运行
- 电信计费系统C++
- MFC Afxcmn.h
- 感染EXE文件的VC++源码请谨慎使用.
评论
共有 条评论