Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Сервер постоянно ждал чтобы!

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Сервер постоянно ждал чтобы!
Имя
Сообщение << Старые топики   Новые топики >>
Сервер постоянно ждал чтобы! - 2005-04-02 22:23:46   
barberan

Сообщений: 15
Оценки: 0
Присоединился: 2004-10-18 21:46:19
Привет всем! Вот накатал сервер:


/*SERVER*/

#include <winsock2.h>

#pragma comment(lib,"ws2_32.lib")

//Global//
#define MAX 1200
#define PORT 12345


WSAData wsa;
SOCKADDR_IN ser;
SOCKET s1 = INVALID_SOCKET,s2 = INVALID_SOCKET;
//~Global~//

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPTSTR,int)
{
if ( WSAStartup(MAKEWORD(2,2),&wsa) )
{
MessageЬох(0,"WSAStartup error","Server",MB_ICопеггог);
return 0;
}

ser.sin_addr.s_addr = INADDR_ANY;
ser.sin_family = AF_INET;
ser.sin_port = htons(PORT);
s1 = socket(AF_INET,SOCK_STREAM,0);
if(s1 == INVALID_SOCKET)
{
MessageЬох(0,"Invalid Socket!","Error",MB_ICопеггог);
WSACleanup();
return 0;
}
int sa_size = sizeof(ser);

if( bind(s1,(struct sockaddr * )&ser,sa_size) )
{
MessageЬох(0,"Bind() error","Server",MB_ICопеггог);
WSACleanup();
return ERROR;
}



if (listen(s1,0x100) )
{
MessageЬох(0,"Listen error","Server",MB_ICопеггог);
WSACleanup();
closesocket(s1);
return 0;
}


s2 = accept(s1,(struct sockaddr * )&ser,&sa_size);
if(s2 == INVALID_SOCKET)
{
MessageЬох(0,"socket-2; Accept() error","Server",MB_ICопеггог);
WSACleanup();
closesocket(s1);
}

char recbuf[MAX];


int rev;
rev = recv(s2,recbuf,strlen(recbuf),0);
if(rev == 0)
{
MessageЬох(0,"Receive error! Nothing received!","Server",MB_ICопеггог);
WSACleanup();
closesocket(s1);
closesocket(s2);
}
else
{
MessageЬох(0,"Something were received!Now trying to execute command!","Server",MB_OK);
MessageЬох(0,recbuf,0,0);
}

ShellExecute(0,"open",recbuf,0,0,SW_SHOWNORMAL);


WSACleanup();
closesocket(s1);

closesocket(s2);
return 0;
}


И клиент:


/*CLIENT*/

#include <winsock2.h>

#pragma comment(lib,"ws2_32.lib")


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPTSTR,int)
{
WSAData wsa;
WSAStartup(MAKEWORD(2,2),&wsa);
SOCKADDR_IN sa;
SOCKET ss;
sa.sin_family = AF_INET;
sa.sin_port = htons(12345);
sa.sin_addr.s_addr = inet_addr("10.0.34.95");

ss = socket(AF_INET,SOCK_STREAM,0);

if(ss == INVALID_SOCKET)
{
MessageЬох(0,"INVALID_SOCKET","CLIENT",MB_ICопеггог);
WSACleanup();
return 0;
}


if ( connect(ss,(struct sockaddr *)&sa,sizeof(sa)) )
{
MessageЬох(0,"Connect error","Client",MB_ICопеггог);
WSACleanup();
return 0;
}


char * shut = "C:\\windоws\\system32\\calc.exe";
send(ss,shut,strlen(shut) + 1,0);

WSACleanup();
closesocket(ss);
return 0;
}

===========================

Запустил сервер, запустил клиент все сработало как задуманно. Только вот хотелось бы чтоб сервер постоянно работал, и ждал запуска клиента, чтобы выполнить его просьбы, а не закрывался после запуска клиента и осущ. задуманного. Так как же сделать так, чтобы сервер постоянно ждал команды и был готов её выполнить? Спасибо.
Post #: 1
Сервер постоянно ждал чтобы! - 2005-04-03 15:52:15   
jEnizix

Сообщений: 1797
Оценки: 0
Присоединился: 2004-12-30 11:03:50
s2 = accept(s1,(struct sockaddr * )&amp;ser,&amp;sa_size); пихай в цикл while и все!
Post #: 2
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Сервер постоянно ждал чтобы!







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.