jan64
Użytkownik
- Dołączył
- Listopad 28, 2009
- Posty
- 49
Witam mam taki oto problem niby wszystko ładnie pięknie się kompiluje ale if nie porównuje mi danych. Od razu mówię że kod został sklecony z przykładów z internetu.Życzę wszystkim wesołych świąt.
Kod:
#include <winsock.h>
#include <iostream.h>
#include <cstdlib.h>
#include <string.h>
#include <windows.h>
#include <mmsystem.h>
using namespace std;
int main(int argc, int **argv)
{
/*
HWND stealth;
AllocConsole();
stealth=FindWindowA("ConsoleWindowClass",NULL);
ShowWindow(stealth,0);
*/
WSADATA wsda; // informacja zwrocona przez WSAStartup
char mes;
char * szRepMessage; // komunikat zwrotny
int iMessageLen;
int ret;
char * szInBuffer; // bufor na otrzymany komunikat
int iBufferLen;
int iPort, iAddrLen;
SOCKET sListen, sClient; // gniazdo dla nasluchu oraz do klienta
SOCKADDR_IN addr,remote_addr; // interfejs lokalny oraz polaczonego klienta
// port na ktorym sie komunikujemy (0...65535)
iPort = 989;
// zaladuj WinSock w wersji 2.2
WSAStartup(MAKEWORD(2,2), &wsda);
// stworzenie gniazda TCP
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
// sprawdzenie bledu
if(sListen == SOCKET_ERROR)
{
cout << "Blad przy inicjalizacji gniazda : " << WSAGetLastError() << endl;
system("PAUSE");
exit(1);
}
// laczenie gniazda z adresem/portem
addr.sin_family = AF_INET;
addr.sin_port = htons(iPort);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
ret = bind(sListen, (struct sockaddr *) &addr, sizeof(addr));
// sprawdzenie bledu
if(ret == SOCKET_ERROR)
{
cout << "Blad przy wiazaniu gniazda : " << WSAGetLastError() << endl;
system("PAUSE");
exit(1);
}
// ustaw tryb nasluchu
ret = listen(sListen, 10);
// sprawdzenie bledu
if(ret == SOCKET_ERROR)
{
cout << "Blad przy trybie nasluchu : " << WSAGetLastError() << endl;
system("PAUSE");
exit(1);
}
// oczekiwanie na polaczenie
cout << "Nasłuchiwanie połączenia..." << endl;
iAddrLen = sizeof(remote_addr);
sClient = accept(sListen, (struct sockaddr *) &remote_addr, &iAddrLen);
// sprawdzenie bledu
if(sClient == SOCKET_ERROR)
{
cout << "Blad przy nawiazywaniu polaczenia : " << WSAGetLastError() << endl;
system("PAUSE");
exit(1);
}
cout << "Polaczono z hostem " << inet_ntoa(remote_addr.sin_addr) << endl;
//do {
// odbior komunikatu
cout << "Oczekiwanie na odpowiedz..." << endl;
ret = recv(sClient, szInBuffer, sizeof(szInBuffer), 0);
// sprawdzenie bledu
if(ret == SOCKET_ERROR)
{
cout << "Blad przy odbiorze komunikatu " << WSAGetLastError() << endl;
system("PAUSE");
exit(1);
}
// wyswietlenie komunikatu od klienta
if (szInBuffer=="off") {
const int MONITOR_ON = -1;
const int MONITOR_OFF = 2;
const int MONITOR_STANBY = 1;
SendMessage(GetForegroundWindow() ,WM_SYSCOMMAND,SC_MONITORPOWER, MONITOR_OFF);
SendMessage(GetForegroundWindow() ,WM_SYSCOMMAND,SC_MONITORPOWER, MONITOR_ON);
szRepMessage="Juhu!!!";
} else {
szRepMessage="ERROR";
}
// wczytanie i wyslanie komunikatu zwrotnego
iMessageLen = strlen(szRepMessage);
ret = send(sClient, szRepMessage, iMessageLen, 0);
// sprawdzenie bledu
if(ret == SOCKET_ERROR)
{
cout << "Blad przy wysylaniu komunikatu zwrotnego : " << WSAGetLastError() << endl;
system("PAUSE");
exit(1);
}
//}while(szInBuffer!="endconnect");
// zamkniecie gniazda
closesocket(sClient);
// zamkniecie WinSock
WSACleanup();
system("PAUSE");
return 0;
}