Добавил:
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[100], buf1[100];
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, 100, 0);
//Вывод ответа
buf[len]='\0';
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;
}