ySocketAdress, & a)! =
SOCKET_ERROR)
// спробувати отримати адресу клієнта
cout <<"accepted connection from" <
*/
// запустити в окремій нитки функцію обслуговування клієнта
if (! AfxBeginThread (ConnectHandler, (void *) newSocket))
{
// cout <
}
} (MySocket); 0;
} ConnectHandler (LPVOID pParam)
{s = (SOCKET) pParam ;//гніздо, з яким буде вестися
обменbuf [500],// ​​буфери для даних [500],// ​​буфер для шифрованого тексту
pwd [21];// пароль
char len [4]; str; n, nFields; (pwd, password.operator LPCTSTR (), 20);
recv (s, len, sizeof len, 0);// прийом даних від клієнта = recv (s, encrypted, (int) len, 0);// прийом даних від клієнта
crypt (encrypted, buf, pwd, n); (n <1) {(s);// закриття гнезда0;
} {(IsBusy); = true; LipField; = pLipRec-> Open (AFX_DB_USE_DEFAULT_TYPE, buf); = pLipRec-> GetODBCFieldCount (); (n! = 0 | | nFields> 0) {(s, (char *) & nFields, sizeof nFields, 0); (int i = 0; i GetODBCFieldInfo (i, LipField); = crypt (LipField.m_strName. operator LPCTSTR (),, pwd, LipField.m_strName.GetLength () + 1); (s, (char *) & n, sizeof n, 0); (s, encrypted, n, 0);
}> MoveFirst (); (! pLipRec-> IsEOF ())
{(int i = 0; i
{> GetFieldValue (i, str); = crypt (str, encrypted, pwd, str.GetLength () + 1); (s, (char *) & n, sizeof n, 0); (s, encrypted, n, 0);
}> MoveNext (); (! pLipRec-> IsEOF ()) [0] = 1; [0] = 0; (s, len, 1, 0);
}> Close ();
} {= 0; (s, (char *) & nFields, sizeof nFields, 0);
} = false; (s, len, sizeof len, 0);// прийом даних від клієнта = recv (s, encrypted, (int) len, 0);// прийом даних від клієнта (encrypted, buf, pwd, n);
} while (n> 0); (s);// закриття гнезда0;
}
# include "stdafx.h"
# include "crypt.h"
# include
// функція перетворення рядка пароля в гаму шифру
unsigned long gamma (char * pwd)
{buf [20]; i; long flag; unsigned long g; (pwd) {(buf, 0x55, 20) ;//UUUUUUUUUUUUUUUUUUUU (buf, pwd, strlen (pwd)) ;/ /passwordUUUUUUUUUUUU (i = 0, g = 0; i <20; i + +)// згортка пароля + = (unsigned long) (buf [i] <<(i% 23));
} (i = 5; i> 0; i -) {//циклічний зсув на 5 ро...