Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Labas / Шифр / server / server

.cpp
Скачиваний:
5
Добавлен:
15.06.2014
Размер:
4.88 Кб
Скачать
// server.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "server.h"
#include <windows.h>
#include <Winsock2.h>
#define PORT1 2000;



#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// The one and only application object

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;

	// initialize MFC and print and error on failure
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
	{
		// TODO: change error code to suit your needs
		_tprintf(_T("Fatal Error: MFC initialization failed\n"));
		nRetCode = 1;
	}
	else
	{


SOCKET s1, s2;
	int len;
	char buf[500], buf1[500];
	char *txt="Соединение установлено";
	char *msg="Сервер завершил работу";
	struct sockaddr_in sin1, sin2;
	//struct hostent *hp;
	//CString comp;
	//Инициализация библиотеки
	WSADATA wsaData;
	if( WSAStartup(MAKEWORD(2, 2), &wsaData)!=0 )
	{
		printf("Error1\n");
		return 0;
	}


	//Создать сокет
	s1=socket(AF_INET, SOCK_STREAM, 0);
	//comp='qw';
	//hp=gethostbyname(comp);
	
	//Заполнить структуру адреса
	memset ((char*)&sin1,'\0', sizeof(sin1));
	sin1.sin_family=AF_INET;
	sin1.sin_addr.s_addr=INADDR_ANY;
	sin1.sin_port=PORT1;
	//Подключить сокет
	if(bind(s1,(struct sockaddr *)&sin1, sizeof(sin1))!=0)
	{
		printf("Error2\n");
		return 0;
	}
	//перевести сокет в состояние "слушать"
	listen(s1, 3);
	//цикл ожидания вызовов клиентов
	for(int i=0; i<100; i++)
	{
		len=sizeof(sin2);
		//Ожидание запросов от клиентов
		s2=accept(s1,(struct sockaddr*)&sin2, &len);

		//Запрос пришёл, посылаем информацию
		send(s2,txt,strlen(txt),0);
		//Ожидание ответа
		len=recv(s2, buf, 500, 0);
		//Вывод ответа
		buf[len]='\0';

 //Разкодировка
for (int i=0;i<500;i++) {
	switch (buf[i]) {
		case '~': buf[i]=' '; break;

        case '!': buf[i]='.'; break;
		case '@': buf[i]=','; break;
		case '#': buf[i]='-'; break;
		case '$': buf[i]='0'; break;
        case '%': buf[i]='1'; break;
	    case '^': buf[i]='2'; break;
		case '&': buf[i]='3'; break;
		case '*': buf[i]='4'; break;

		case 'q': buf[i]='5'; break;
        case 'w': buf[i]='6'; break;
	    case 'e': buf[i]='7'; break;
		case 'r': buf[i]='8'; break;
		case 't': buf[i]='9'; break;
		case 'y': buf[i]='й'; break;
        case 'u': buf[i]='ц'; break;
	    case 'i': buf[i]='у'; break;
		case 'o': buf[i]='к'; break;
		case 'p': buf[i]='е'; break;
        case 'a': buf[i]='н'; break;
	    case 's': buf[i]='г'; break;
		case 'd': buf[i]='ш'; break;
		case 'f': buf[i]='щ'; break;
		case 'g': buf[i]='з'; break;
        case 'h': buf[i]='х'; break;
	    case 'j': buf[i]='ъ'; break;
		case 'k': buf[i]='ё'; break;
		case 'l': buf[i]='ф'; break;
		case 'z': buf[i]='ы'; break;
        case 'x': buf[i]='в'; break;
	    case 'c': buf[i]='а'; break;
		case 'v': buf[i]='п'; break;
		case 'b': buf[i]='р'; break;
        case 'n': buf[i]='о'; break;
	    case 'm': buf[i]='л'; break;
		case ':': buf[i]='д'; break;
		case ';': buf[i]='ж'; break;

		case 'й': buf[i]='э'; break;
        case 'ц': buf[i]='я'; break;
	    case 'у': buf[i]='ч'; break;
		case 'к': buf[i]='с'; break;
		case 'е': buf[i]='м'; break;
		case 'н': buf[i]='и'; break;
        case 'г': buf[i]='т'; break;
	    case 'ш': buf[i]='ь'; break;
		case 'щ': buf[i]='б'; break;
		case 'з': buf[i]='ю'; break;

        case 'д': buf[i]='q'; break;
	    case 'л': buf[i]='w'; break;
		case 'о': buf[i]='e'; break;
		case 'р': buf[i]='r'; break;
		case 'п': buf[i]='t'; break;
        case 'а': buf[i]='y'; break;
	    case 'в': buf[i]='u'; break;
		case 'ы': buf[i]='i'; break;
		case 'ф': buf[i]='o'; break;
		case 'я': buf[i]='p'; break;
	    case 'ч': buf[i]='a'; break;
		case 'с': buf[i]='s'; break;
		case 'м': buf[i]='d'; break;
		case 'и': buf[i]='f'; break;
        case 'т': buf[i]='g'; break;
	    case 'ь': buf[i]='h'; break;
		case '<': buf[i]='j'; break;

		case '>': buf[i]='k'; break;
        case '"': buf[i]='l'; break;
	    case '`': buf[i]='z'; break;
		case '1': buf[i]='x'; break;
		case '2': buf[i]='c'; break;
		case '3': buf[i]='v'; break;
        case '4': buf[i]='b'; break;
	    case '5': buf[i]='n'; break;
		case '6': buf[i]='m'; break;

		case '7': buf[i]='!'; break;
		case '8': buf[i]='@'; break;
	    case '9': buf[i]='('; break;
		case '0': buf[i]=')'; break;
		case '+': buf[i]='"'; break;
		case '?': buf[i]=':'; break;
	}
                   }
//--------


		CharToOem(buf, buf1);
   

		printf("%s\n",buf1);
		//закрытие связи
		shutdown(s2,0);
		//закрытие сокета
		closesocket(s2);
	};
	/*CharToOem(msg,buf1);
	printf("%s\n",buf1);
	closesocket(s1);*/





		// TODO: code your application's behavior here.
	}

	return nRetCode;
}
Соседние файлы в папке server