Разделы сайта

Результаты работы

inta;= socket(AF_INET, SOCK_STREAM, 0); // создать гнездо

if(MySocket == INVALID_SOCKET)

{ // в случае неудачи - выдать сообщение и выйти

// cout<<endl<<"socket( .) error "<<WSAGetLastError()<<endl;0;

}.sin_family = AF_INET; // заполнение структуры

данных.sin_port = htons(port);.sin_addr.s_addr = htonl(INADDR_ANY);(bind(MySocket, (sockaddr*) &MySocketAdress,(MySocketAdress)) == SOCKET_ERROR) // получение локального

адреса

{ // в случае неудачи - выдать сообщение, закрыть гнездо и выйти

// cout<<endl<<"bind( .) error "<<WSAGetLastError()<<endl;(MySocket);0;

}(listen(MySocket, 5) == SOCKET_ERROR) // перевести гнездо в с

остояние ожидания

{

// cout<<endl<<"listen( .) error "<<WSAGetLastError()<<endl;(MySocket);0;

}(1) {= sizeof(sockaddr_in);= accept(MySocket, (sockaddr*)&MySocketAdress, &a); //

принять соединение(newSocket == INVALID_SOCKET)

{

//cout<<endl<<"accept( .) error "<<WSAGetLastError()<<endl;(MySocket);0;

}

/*= sizeof(sockaddr_in);(getpeername(sw, (sockaddr*)&MySocketAdress, &a) !=

SOCKET_ERROR)

// попытаться получить адрес клиента

cout<<"accepted connection from "<<inet_ntoa(sa.sin_addr)<<endl;

*/

// запустить в отдельной нити функцию обслуживания клиента

if(!AfxBeginThread(ConnectHandler, (void*) newSocket))

{

//cout<<endl<<"_beginthread( .) error "<<errno<<endl;(MySocket);0;

}

}(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 < nFields; 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 < nFields; 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 <string.h>

// функция преобразования строки пароля в гамму шифра

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 разрядов вправо

flag = g & 1;= g >> 1;(flag)

g |= 0x80000000;

}g; // возвратить значение гаммы

}

// шифрует открытый текст source по паролю pwd

// и записывает шифрованный текст в dest

// шифрование симметричноеcrypt(const char *source, char *dest, char *pwd, int len)

{, nBlocs;long *pSrc, *pDst, g;= (unsigned long *) source;= (unsigned long *) dest;

g = gamma(pwd);// получить гамму шифра= (len + 1) / 4 + 1; // сосчитать число 32-разрядных блоков

Перейти на страницу: 1 2 3 4

Самое читаемое:

Дискретный регулятор мощности секционированной солнечной батареи
Система электропитания (СЭП) является одной из важнейших частей в составе оборудования спутника, обеспечивая энергией все его служебные системы и полезную нагрузку КА. Важнейшими характеристиками СЭП являются качество выходного напряжения, масса, габариты, КПД, надежность и стоимость. Одним из способов достижения тр ...

www.techstages.ru : Все права защищены! 2024