⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverftp.cpp

📁 win网络程序设计中的一个源代码
💻 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 + -