Добавил:
Yanus
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
// 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;
}