Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
praktika_kursach2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.11 Mб
Скачать

5. Требование к программной документации

5.1 Предварительный состав программной документации

Состав программной документации должен включать в себя:

  • техническое задание ГОСТ 19.201;

  • задание к учебной практике;

  • текст программы по 19.401-78.

6. Стадии и этапы разработки

Таблица 1 – Стадии и этапы разработки

Этапы разработки

Время работы в часах

Первоначальное обдумывание проекта

2

Создание чернового варианта

4

Создание псевдокода

2

Пробный запуск программы

0.5

Исправление ошибок

3

Составление документации

2

Вывод конечного исправного варианта

3

7. Порядок приема и контроля

Контроль производится в университете, на компьютерах в ходе защиты курсовой работы. Пример для проверки дается преподавателем.

Разработал

студент гр. ВПР_2 «____»____________20__год

Благодарный Александр Васильевич

Приложение б

Исходный код программного средства

Полный исходный код проекта находится на прилагаемом носителе.

Листинг Б.1 - Исходный код формы ChatServer

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 NetworksApi.TCP.SERVER;

using System.Media;

using System.IO;

using System.Net;

namespace ChatServer

{

public delegate void UpdateChatLog(string txt);

public delegate void UpdateListBox(ListBox box, string value, bool Remove);

public partial class ChatServer : Form

{

Server server;

public ChatServer()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

server = new Server("192.168.1.100", "7770");

server.OnClientConnected += new OnConnectedDelegate(Server_OnClientConnected);

server.OnClientDisconnected += new OnDisconnectedDelegate(Server_OnClientDisconnected);

server.OnDataReceived += new OnReceivedDelegate(Server_OnDataReceived);

server.OnServerError += new OnErrorDelegate(Server_OnServerError);

server.Start();

}

private void ChangeChatLog(string txt)

{

if (richTextBox1.InvokeRequired)

{

Invoke(new UpdateChatLog(ChangeChatLog), new object[] { txt });

SoundPlayer player = new SoundPlayer("@/media/Windows Proximity Notification.wav");

player.Play();

}

else

{

richTextBox1.Text += txt + "\r\n";

}

}

private void ChangeListBox(ListBox box, string value, bool Remove)

{

if (box.InvokeRequired)

{

Invoke(new UpdateListBox(ChangeListBox), new object[] { box, value, Remove });

}

else

{

if (Remove)

{

box.Items.Remove(value);

}

else

{

box.Items.Add(value);

}

}

}

private void Server_OnServerError(object Sender, ErrorArguments R)

{

MessageBox.Show(R.ErrorMessage);

}

private void Server_OnDataReceived(object Sender, ReceivedArguments R)

{

ChangeChatLog(R.ReceivedData);

server.BroadCast(R.ReceivedData);

}

private void Server_OnClientDisconnected(object Sender, DisconnectedArguments R)

{

server.BroadCast("Кто-то уходит");

ChangeListBox(listBox1, R.Name, true);

ChangeListBox(listBox2, R.Ip, true);

}

private void Server_OnClientConnected(object Sender, ConnectedArguments R)

{

server.BroadCast("Кто-то заходит");

ChangeListBox(listBox1, R.Name, false);

ChangeListBox(listBox2, R.Ip, false);

}

private void button1_Click(object sender, EventArgs e)

{

server.SendTo((string )listBox1.SelectedItem, textBox2.Text);

}

private void button2_Click(object sender, EventArgs e)

{

server.BroadCast(textBox2.Text);

}

private void button3_Click(object sender, EventArgs e)

{

server.DisconnectClient((string)listBox1.SelectedItem);

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

System.Environment.Exit(System.Environment.ExitCode);

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{

listBox2.SelectedIndex = listBox1.SelectedIndex;

}

private void listBox2_SelectedIndexChanged(object sender, EventArgs e)

{

listBox1.SelectedIndex = listBox2.SelectedIndex;

}

}

}

Листинг Б.2 - Исходный код формы ChatClient

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 NetworksApi.TCP.CLIENT;

using System.Media;

namespace WindowsFormsApplication1

{

public delegate void UpdateText(string txt);

public partial class ChatClient : Form

{

Client client;

public ChatClient()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

}

private void richTextBox1_TextChanged(object sender, EventArgs e)

{

richTextBox1.SelectionStart = richTextBox1.Text.Length;

richTextBox1.ScrollToCaret();

}

private void ChangeTextBox(string txt)

{

if(richTextBox1.InvokeRequired)

{

Invoke(new UpdateText(ChangeTextBox), new object[] { txt });

}

else

{

richTextBox1.Text += txt + "\r\n";

}

}

// Присоединение к серверу

private void button3_Click(object sender, EventArgs e)

{

if (textBox3.Text != "" || textBox4.Text != "" || textBox5.Text != "")

{

client = new Client();

client.ClientName = textBox4.Text;

client.ServerIp = textBox3.Text;

client.ServerPort = textBox5.Text;

client.OnClientConnected += new OnClientConnectedDelegate(client_OnClientConnected);

client.OnClientConnecting += new OnClientConnectingDelegate(client_OnClientConnecting);

client.OnClientDisconnected += new OnClientDisconnectedDelegate (client_OnClientDisconnected);

client.OnClientError += new OnClientErrorDelegate(client_OnClientError);

client.OnDataReceived += new OnClientReceivedDelegate(Client_OnDataReceived);

client.Connect();

button3.Enabled =false;

}

else

{

MessageBox.Show("Заполните все верхние поля!");

}

}

//получение данных

private void Client_OnDataReceived(object Sender, ClientReceivedArguments R)

{

ChangeTextBox(R.ReceivedData);

SoundPlayer player = new SoundPlayer("@/media/Windows Proximity Notification.wav");

player.Play();

}

private void client_OnClientError(object Sender, ClientErrorArguments R)

{

ChangeTextBox(R.ErrorMessage);

}

private void client_OnClientDisconnected(object Sender, ClientDisconnectedArguments R)

{

ChangeTextBox(R.EventMessage);

}

private void client_OnClientConnecting(object Sender, ClientConnectingArguments R)

{

ChangeTextBox(R.EventMessage);

}

private void client_OnClientConnected(object Sender, ClientConnectedArguments R)

{

ChangeTextBox(R.EventMessage);

}

//отправка сообщения

private void button1_Click(object sender, EventArgs e)

{

if (client != null && client.IsConnected)

{

client.Send(textBox4.Text + ": " + textBox2.Text);

textBox2.Clear();

}

}

private void button2_Click(object sender, EventArgs e)

{

textBox2.Clear();

}

private void textBox2_KeyDown(object sender, KeyEventArgs e)

{

if (client != null && client.IsConnected && e.KeyCode == Keys.Enter)

{

client.Send(textBox4.Text + ": " + textBox2.Text);

textBox2.Clear();

}

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

System.Environment.Exit(System.Environment.ExitCode);

}

private void button4_Click(object sender, EventArgs e)

{

{

{

System.Diagnostics.Process p = new System.Diagnostics.Process();

p.StartInfo.FileName = @"Private\Chat\Chat\bin\Debug\Chat.exe";

p.Start();

}

}

}

}

}

Листинг Б.3 - Исходный код формы PrivateChanel

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.Net;

using System.Net.Sockets;

using System.Media;

namespace Chat

{

public partial class PrivateChanel : Form

{

Socket socket;

EndPoint localEndPoint, remoteEndPoint;

public PrivateChanel()

{

InitializeComponent();

socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

textLocalIP.Text = GetLocalIP();

textFriendsIP.Text = GetLocalIP();

}

private string GetLocalIP()

{

IPHostEntry host;

host = Dns.GetHostEntry(Dns.GetHostName());

foreach(IPAddress ip in host.AddressList)

{

if(ip.AddressFamily == AddressFamily.InterNetwork)

{

return ip.ToString();

}

}

return "127.0.0.1";

}

private void MessageCallBack(IAsyncResult aResult)

{

try

{

int size = socket.EndReceiveFrom(aResult, ref remoteEndPoint);

if(size>0)

{

byte[] receiveData = new byte[1464];

receiveData = (byte[])aResult.AsyncState;

UTF8Encoding eEnconding = new UTF8Encoding();

string receivedMessage = eEnconding.GetString(receiveData);

listMessage.Items.Add("Собеседник: " + receivedMessage);

SoundPlayer player = new SoundPlayer("@/media/Windows Proximity Notification.wav");

player.Play();

}

byte[] buffer = new byte[1500];

socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEndPoint, new AsyncCallback(MessageCallBack), buffer);

}

catch(Exception exp)

{

MessageBox.Show(exp.ToString());

}

}

private void button2_Click(object sender, EventArgs e)

{

}

private void groupBox1_Enter(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

try

{

localEndPoint = new IPEndPoint(IPAddress.Parse(textLocalIP.Text), Convert.ToInt32(textLocalPort.Text));

socket.Bind(localEndPoint);

remoteEndPoint = new IPEndPoint(IPAddress.Parse(textFriendsIP.Text), Convert.ToInt32(textFriendsPort.Text));

socket.Connect(remoteEndPoint);

byte[] buffer = new byte[1500];

socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEndPoint, new AsyncCallback(MessageCallBack), buffer);

button1.Text = "OK";

button1.Enabled = false;

button2.Enabled = true;

textMessage.Focus();

}

catch(Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

private void button2_Click_1(object sender, EventArgs e)

{

try

{

System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();

byte[] msg = new byte[1500];

msg = enc.GetBytes(textMessage.Text);

socket.Send(msg);

listMessage.Items.Add("Вы: " + textMessage.Text);

textMessage.Text = "";

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

private void textMessage_KeyUp(object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.Enter)

{

try

{

System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();

byte[] msg = new byte[1500];

msg = enc.GetBytes(textMessage.Text);

socket.Send(msg);

listMessage.Items.Add("Вы: " + textMessage.Text);

textMessage.Text = "";

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

}

private void Form1_Load(object sender, EventArgs e)

{

}

}

}

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]