Создать клиент-серверное приложение «Библиотека»
Автор: weelcoom • Апрель 27, 2022 • Лабораторная работа • 2,357 Слов (10 Страниц) • 245 Просмотры
Лабораторная работа №2
по дисциплине: «Операционные системы»
Лабораторная работа №2 | Ф.И.О. | |
Группа | ||
Преподаватель | ||
Дата сдачи |
Цель работы: создать клиент-серверное приложение «Библиотека».
Алгоритм программы:
Запускается приложение, имеющее клиентскую и серверную части, которые являются отдельными программами. Клиентская часть при запуске порождает серверную как новый процесс. Клиентская часть берет на себя работу с интерфейсом пользователя, серверная – работу с файлами и обработку информации. Сервер осуществляет хранение информации. Информация о записях сохраняться в файл *.csv. Между собой клиентская и серверная части взаимодействуют через именованный канал.
Окно клиента отображает 4 поля для записи: имя автора, название книги, год издания и издательство. Так же в окне 2 кнопки : отправить (данные) на сервер и остановить сервер.
Если сервер остановлен или не запущен, то программа выдает соответствующее сообщение. При добавлении информации, программа выдаст окно с записью о том, что книга успешно добавлена.
Листинг программы:
Клиент:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using StopWordsModel;
using System.IO;
using System.IO.Pipes;
namespace ClientServerApp
{
public partial class Form1 : Form
{
private NamedPipeClientStream _pipeClientStream;
private StreamWriter _streamWriter;
private string _bookAuthor;
private string _bookName;
private string _bookYear;
private string _bookPublisher;
private Process _process;
public Form1()
{
InitializeComponent();
// Запуск сервера
StartServer();
}
private void StartServer()
{
_process = Process.Start("Server");
//Создание именованного канала
_pipeClientStream = new NamedPipeClientStream(NameOptions.PipeName);
// и подключение к нему
_pipeClientStream.Connect();
_streamWriter = new StreamWriter(_pipeClientStream) { AutoFlush = true };
}
// Отправка данных на сервер
private void ButtonSend_Click(object sender, EventArgs e)
{
if (_process.HasExited)
{
if (MessageBox.Show(text: "Сервер остановлен. Запустить?",
caption: "О как. А сервер остановлен",
MessageBoxButtons.OKCancel) == DialogResult.OK)
{
StartServer();
}
else
{
return;
}
}
_streamWriter.WriteLine(MessagesServer.StartServerMessage);
...