📄 serverftp.cpp
字号:
// serverftp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "WinSock.h"
#include "windows.h"
#include "stdio.h"
#pragma comment (lib, "wsock32.lib")
////////////////////////////////////////////
#define RECV_PORT 2000
#define SEND_PORT 3000
#define MAX_FILESIZE 32*1024
////////////////////////////////////////////
SOCKET sock, sock1;
sockaddr_in ServerAddr;
sockaddr_in ClientAddr;
struct Filedata
{
char ffname [30];
char ffdata [MAX_FILESIZE];
int len;
}DataPacket;
int Addrlen;
DWORD StartSock()
{
WSADATA WSAData;
if (WSAStartup (MAKEWORD (2,2), &WSAData) !=0)
{
printf ("sock init fail!\n");
return (-1);
}
return (1);
}
DWORD CreateSocket()
{
sock = socket (AF_INET, SOCK_STREAM, 0);
if (sock == SOCKET_ERROR)
{
printf("sock create fail!");
WSACleanup();
return (-1);
}
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_addr.s_addr = htonl (INADDR_ANY);
ServerAddr.sin_port = htons (RECV_PORT);
if (bind (sock, (struct sockaddr*) &ServerAddr, sizeof (struct sockaddr_in )) == SOCKET_ERROR)
{
printf ("sock bind error code!");
return (-1);
}
return (1);
}
DWORD WriteFile (char *fname, char *fdata, int flen)
{
int i=0;
FILE *fp;
fp = fopen (fname,"w");
if (fp == NULL)
{
printf ("cannot open this file\n");
}
for (i=0; i<flen; i++)
{
fputc (fdata[i], fp);
}
fclose (fp);
return (1);
}
DWORD ConnectProcess()
{
Addrlen = sizeof (sockaddr_in);
if (listen (sock, 5) < 0)
{
printf ("Listen error");
return (-1);
}
printf ("Listening...\n");
for (;;)
{
sock1 = accept (sock, (struct sockaddr FAR*) & ClientAddr, &Addrlen);
for (;;)
{
memset (DataPacket.ffname, 0, 30);
memset (DataPacket.ffdata, 0, MAX_FILESIZE);
DataPacket.len = 0;
if(recv (sock1, (char *) & DataPacket, sizeof (DataPacket), 0) <=0)
{
break;
}
printf ("Has received file: %s, length is %d", DataPacket.ffname, DataPacket.len);
WriteFile (DataPacket.ffname, DataPacket.ffdata, DataPacket.len);
printf ("\n");
}
}
}
int _tmain()
{
if (StartSock() == -1)
return (-1);
if (CreateSocket() == -1)
return (-1);
if (ConnectProcess() == -1)
return (-1);
return (1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -