- •Задание на курсовую работу
- •Оглавление
- •Введение
- •Постановка задачи
- •1. Теоретические основы разрабатываемой системы
- •2. Описание алгоритма работы приложения
- •3. Описание структуры приложения
- •Основная функция клиента:
- •4. Результаты работы приложения
- •Заключение
- •Список использованной литературы
- •Приложение 1 Текст программы «server111.Cpp»
- •Основная функция сервера логирования:
- •Приложение 2 Текст программы «server222.Cpp»
- •Приложение 3 Текст программы «client.Cpp»
- •Приложение 4 Текст программы «log.Cpp»
- •Приложение 5 Текст программы «server1.Cpp»
- •Приложение 6 Текст программы «server2.Cpp»
- •Приложение 7 Текст программы «client.Cpp»
- •Приложение 8 Текст программы «clientOs.Cpp»
Приложение 7 Текст программы «client.Cpp»
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <string>
#pragma comment(lib, "Ws2_32.lib")
int main() {
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET) {
std::cerr << "Error creating socket" << std::endl;
WSACleanup();
return 1;
}
sockaddr_in serverAddress = {};
serverAddress.sin_family = AF_INET;
const char* serverIP = "127.0.0.1";
int serverPort;
int serverChoice;
std::cout << "Choose a server to connect to:\n1. First server (port 8081)\n2. Second server (port 8082)\n";
std::cin >> serverChoice;
if (serverChoice == 1) {
serverPort = 8081;
}
else if (serverChoice == 2) {
serverPort = 8082;
}
else {
std::cerr << "Invalid choice. Exiting program." << std::endl;
closesocket(sock);
WSACleanup();
return 1;
}
serverAddress.sin_port = htons(serverPort);
inet_pton(AF_INET, serverIP, &serverAddress.sin_addr);
if (connect(sock, (sockaddr*)&serverAddress, sizeof(serverAddress)) == SOCKET_ERROR) {
std::cerr << "Error connecting to server" << std::endl;
closesocket(sock);
WSACleanup();
return 1;
}
std::string unit;
if (serverChoice == 2) {
std::cout << "Enter the unit of measurement (bytes, mb, gb): ";
std::cin >> unit;
send(sock, unit.c_str(), unit.size(), 0);
}
char buffer[1024];
int bytesReceived = recv(sock, buffer, sizeof(buffer) - 1, 0);
if (bytesReceived > 0) {
buffer[bytesReceived] = '\0';
std::cout << "Response from server:\n" << buffer << std::endl;
}
else {
std::cerr << "Error receiving data from server" << std::endl;
}
closesocket(sock);
WSACleanup();
return 0;
}
Приложение 8 Текст программы «clientOs.Cpp»
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h> // For inet_pton
#include <string>
#pragma comment(lib, "ws2_32.lib")
void connectToServer(const std::string& serverIp, int port, const std::string& message = "") {
WSADATA wsaData;
SOCKET clientSocket;
sockaddr_in serverAddress;
// Initialize Winsock
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
std::cerr << "Error initializing Winsock." << std::endl;
return;
}
// Create a socket
clientSocket = socket(AF_INET, SOCK_STREAM, 0);
if (clientSocket == INVALID_SOCKET) {
std::cerr << "Error creating socket." << std::endl;
WSACleanup();
return;
}
// Set up the server address
serverAddress.sin_family = AF_INET;
serverAddress.sin_port = htons(port);
// Use inet_pton to convert the IP address
if (inet_pton(AF_INET, serverIp.c_str(), &serverAddress.sin_addr) <= 0) {
std::cerr << "Error converting IP address." << std::endl;
closesocket(clientSocket);
WSACleanup();
return;
}
// Connect to the server
if (connect(clientSocket, (sockaddr*)&serverAddress, sizeof(serverAddress)) < 0) {
std::cerr << "Error connecting to server." << std::endl;
closesocket(clientSocket);
WSACleanup();
return;
}
std::cout << "Successfully connected to the server on port " << port << "." << std::endl;
// Send a message (if required)
if (!message.empty()) {
send(clientSocket, message.c_str(), message.size(), 0);
}
// Receive a response from the server
char buffer[1024] = { 0 };
int bytesReceived = recv(clientSocket, buffer, sizeof(buffer) - 1, 0);
if (bytesReceived > 0) {
buffer[bytesReceived] = '\0';
std::cout << "Response from server:\n" << buffer << std::endl;
}
else {
std::cerr << "Error receiving data from server." << std::endl;
}
// Close the socket
closesocket(clientSocket);
WSACleanup();
}
int main() {
std::string serverIp = "192.168.68.110"; // IP address of the virtual machine
int choice;
std::cout << "Select a server to connect to:\n";
std::cout << "1. Server 1 (information about processors and disks)\n";
std::cout << "2. Server 2 (information about memory)\n";
std::cout << "Your choice: ";
std::cin >> choice;
if (choice == 1) {
connectToServer(serverIp, 8081);
}
else if (choice == 2) {
std::string unit;
std::cout << "Enter the memory unit (bytes, mb, gb): ";
std::cin >> unit;
connectToServer(serverIp, 8082, unit);
}
else {
std::cerr << "Invalid choice." << std::endl;
}
return 0;
}
