📄 clientftp.cpp
字号:
// clientftp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "WinSock.h"
#include "windows.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#pragma comment (lib, "wsock32.lib")
///////////////////////////////////////////////////
#define RECV_PORT 2000
#define SEND_PORT 3000
#define MAX_FILESIZE 32*1024
//////////////////////////////////////////////////
SOCKET sock;
sockaddr_in ServerAddr;
struct Filedata
{
char ffname [30];
char ffdata [MAX_FILESIZE];
int len;
}DataPacket;
DWORD StartSock()
{
WSADATA WSAData;
if (WSAStartup (MAKEWORD (2,2), &WSAData) !=0)
{
printf ("sock init fail!\n");
return (-1);
}
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_addr.s_addr = inet_addr ("192.0.5.235");
ServerAddr.sin_port = htons (RECV_PORT);
return (1);
}
DWORD CreateSocket()
{
sock = socket (AF_INET, SOCK_STREAM, 0);
if (sock == SOCKET_ERROR)
{
printf("sock create fail!");
WSACleanup();
return (-1);
}
return (1);
}
void CallServer()
{
CreateSocket();
while (connect (sock, (struct sockaddr *) & ServerAddr, sizeof(ServerAddr)) == SOCKET_ERROR)
printf ("Connect...\n");
}
DWORD GetFile (char *fname)
{
int i = 0;
FILE *fp;
int Filesize = 0;
int count,
total = 0;
char buffer [100];
char Senddata [MAX_FILESIZE];
fp = fopen (fname, "r");
if (fp == NULL)
{
printf ("cannot open this file\n");
return (0);
}
memset (Senddata, 0, MAX_FILESIZE);
while (!feof (fp))
{
count = fread (buffer, sizeof(char), 100, fp);
if (ferror (fp))
{
printf ("read file error");
break;
}
Filesize += count;
if (Filesize > MAX_FILESIZE)
{
printf ("your file is too big\n");
fclose (fp);
return (0);
}
memcpy ( & Senddata [i],buffer, count);
i += count;
}
fclose (fp);
Senddata [i] = '\0';
strcpy (DataPacket.ffname, fname);
memcpy (DataPacket.ffdata, Senddata, Filesize);
DataPacket.len = Filesize;
printf ("%s %d\n", DataPacket.ffname, DataPacket.len);
return (1);
}
DWORD TCPSendPacket (struct Filedata Packet)
{
int length;
length = send (sock, (char *) & Packet, sizeof (DataPacket), 0);
if (length <= 0)
{
printf ("send Filedata error\n");
closesocket (sock);
WSACleanup ();
return (-1);
}
return (1);
}
int _tmain()
{
char sendfilename [30];
StartSock ();
CallServer ();
printf ("connect ok!\n");
while (1)
{
printf ("Input your filename to send:\n");
scanf ("%s", sendfilename);
if (strcmp (sendfilename, "exit") == 0)
break;
if (GetFile (sendfilename) == 0)
continue;
TCPSendPacket (DataPacket);
}
closesocket (sock);
return (1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -