Информационно-вычислительная сеть на основе архитектуры "клиент-сервер", предметная область: "Магазин бытовой техники"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

)

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

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;

Open(AFX_DB_USE_DEFAULT_TYPE,buf);=pLipRec->GetODBCFieldCount();(n!=0||nFields>0){(s,(char*)&nFields,sizeofnFields,0);(inti=0;iGetODBCFieldInfo(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,sizeofn,0);(s,encrypted,n,0);">{>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 разрядов вправо

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-разрядных блоков

for(i = 0; i < nBlocs; i++, pDst++, pSrc++) // цикл гаммирования

открытого

*pDst = *pSrc ^ gamma(0); // текста блоками по 32 бита[nBlocs * 4] = 0;// вставить завершающий символ 0nBlocs * 4 + 1;// возвратить число байт в зашифрованном тексте

}

Приложение Клиент

#include "stdafx.h"

#include "llip_client.h"

#include "MainFrm.h"

#include "llip_clientDoc.h"

#include "llip_clientView.h"

#include "PropDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILEchar THIS_FILE[] = __FILE__;

#endif_MESSAGE_MAP(CLlip_clientApp, CWinApp)

//{{AFX_MSG_MAP(CLlip_clientApp)_COMMAND(ID_APP_ABOUT, OnAppAbout)

// NOTE - the ClassWizard will add and remove mapping macros here.

// DO NOT EDIT what you see in these blocks of generated code!

//}}AFX_MSG_MAP

// Standard file based document commands_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)_MESSAGE_MAP()_clientApp::CLlip_clientApp()

{

// TODO: add construction code here,

// Place all significant initialization in InitInstance

}_clientApp theApp;CLlip_clientApp::InitInstance()

{short port; // порт сервераlong addr; // адрес сервераd(NULL);(d.DoModal() == IDOK) {= d.m_port;(m_pwd, d.m_pwd.operator LPCTSTR(), 20);= *((unsigned long*) d.m_addr);

}false;(!AfxSocketInit())

{(IDP_SOCKETS_INIT_FAILED);FALSE;

}

#ifdef _AFXDLLdControls();// Call this when using MFC in a shared DLL

#elsedControlsStatic();// Call this when linking to MFC statically

#endif(_T("Local AppWizard-Generated Applications"));(0); // Load standard INI file options (including )* pDocTemplate;= new CSingleDocTemplate(_MAINFRAME,_CLASS(CLlip_clientDoc),_CLASS(CMainFrame), // main SDI frame window_CLASS(CLlip_clientView));(pDocTemplate);

// Parse command line for standard shell commands, DDE, file opencmdInfo;(cmdInfo);

// Dispatch commands specified on the command line(!ProcessShellCommand(cmdInfo))FALSE;

ShowWindow(SW_SHOW);_pMainWnd->UpdateWindow();r;_pMainWnd->GetWindowRect(&r);.right = r.left + 500;.bottom = r.top + 380;_pMainWnd->MoveWindow(&r);">// The one and only window has been initialized, so show and update it._pMainWnd->ShowWindow(SW_SHOW);_pMainWnd->UpdateWindow();r;_pMainWnd->GetWindowRect(&r);.right = r.left + 500;.bottom = r.top + 380;_pMainWnd->MoveWindow(&r);

sockaddr_in sa;// структура данных гнезда

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

{(NULL, "Socket error.", "Ошибка", MB_OK);0;

}(addr == INADDR_NONE) // при ошибке

{(NULL, "Invalid IP address.", "Ошибка", MB_OK);(s);0;

}.sin_family = AF_INET;// заполнить структуру данных гнезда.sin_port = htons(port);.sin_addr.s_addr = addr;

// установить соединение:(connect(s, (sockaddr*)&sa, sizeof(sa)) == SOCKET_ERROR)

{(NULL, "Connect error.", "Ошибка", MB_OK);(s);0;

}TRUE;

}CAboutDlg : public CDialog

{:();

// Dialog Data

//{{AFX_DATA(CAboutDlg){ IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg):void DoDataExchange(CDataExchange* pDX); // DDX/DDV

//}}AFX_VIRTUAL

// Implementation:

//{{AFX_MSG(CAboutDlg)

// No message handlers

//}}AFX_MSG_MESSAGE_MAP()

};::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}CAboutDlg::DoDataExchange(CDataExchange* pDX)

{::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP_MESSAGE_MAP()

// App command to run the dialogCLlip_clientApp::OnAppAbout()

{aboutDlg;.DoModal();

}CLlip_clientApp::ExitInstance()

{(s); // закрыть гнездоCWinApp::ExitInstance();}

 

 

Приложение Б (обязательное)

Диаграммы

 

Рисунок 7. (приложение Б) - диаграмма вариантов использования

 

аб

Рисунок 8(приложение Б) - диаграмма деятельности: а - сервер, б - клиент

 

 

Рисунок 9 (приложение Б) - диаграмма развертывания

 

Рисунок 10 (приложение Б) - диаграмма последовательности

 

 

Приложение В

 

Электрическая структурная схема вычислительной сети

 

Рисунок 11 (Приложение Б) - структурная схема сети