Программный код на с # в VIsualstudia. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программный код на с # в VIsualstudia.



//-------------------------------------------------------//

ChatController.cs

//-------------------------------------------------------//

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace serverChat

{

public static class ChatController

{

   private const int _maxMessage = 100;

   public static List<message> Chat = new List<message>();

   public struct message

   {

       public string userName;

       public string data;

       public message(string name, string msg)

       {

           userName = name;

           data = msg;

       }

   }

   public static void AddMessage(string userName, string msg)

   {

       try

       {

           if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(msg)) return;

           int countMessages = Chat.Count;

           if (countMessages > _maxMessage) ClearChat();

           message newMessage = new message(userName, msg);

           Chat.Add(newMessage);

           Console.WriteLine("{0}: {1}", userName, msg);

           Server.UpdateAllChats();

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с доставкой: {0}.", exp.Message); }

   }

   public static void AddLsMessage(string userName, string msg, string au)

   {

       try

       {

           if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(msg) || string.IsNullOrEmpty(au)) return;

           int countMessages = Chat.Count;

           if (countMessages > _maxMessage) ClearChat();

           message newMessage = new message(userName, msg);

           Console.WriteLine("{0}->{2}: {1}", userName, msg, au);

           Server.UpdateAllChatsLS(userName, msg, au);

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с доставкой: {0}.", exp.Message); }

   }

   public static void ClearChat()

   {

       Chat.Clear();

   }

   public static string GetChat()

   {

       try

       {

           string data = "#updatechat&";

           data += String.Format("{0}~{1}", Chat[Chat.Count - 1].userName, Chat[Chat.Count - 1].data);

           return data;

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с отправкой: {0}", exp.Message); return string.Empty; }

   }

   public static string GetChatLS(string userName, string msg, string au)

   {

       try

       {

           string data = "#lss&";

           data += String.Format("{0}~{1}|{2}", msg, userName, au);

           return data;

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с отправкой: {0}", exp.Message); return string.Empty; }

   }

   public static string GetSysMessage(string g)

   {

       try

       {

           string data = "#sys&";

           data += String.Format(g);

           return data;

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с обновлением чата: {0}", exp.Message); return string.Empty; }

   }

   public static string GetPeople()

   {

       try

       {

           string data = "#people&";

           int countMessages = Server.Clients.Count;

           if (countMessages <= 0) return string.Empty;

           for (int i = 0; i < countMessages; i++)

           {

               data += String.Format("{0}|", Server.Clients[i].UserName);

           }

           return data;

       }

       catch (Exception exp) { Console.WriteLine("Ошибка в передаче информации о людях: {0}", exp.Message); return string.Empty; }

   }

}

}

//-------------------------------------------------------//

Client.cs

//-------------------------------------------------------//

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace serverChat

{

public static class ChatController

{

   private const int _maxMessage = 100;

   public static List<message> Chat = new List<message>();

   public struct message

   {

       public string userName;

       public string data;

       public message(string name, string msg)

       {

           userName = name;

           data = msg;

       }

   }

   public static void AddMessage(string userName, string msg)

   {

       try

       {

           if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(msg)) return;

           int countMessages = Chat.Count;

           if (countMessages > _maxMessage) ClearChat();

           message newMessage = new message(userName, msg);

           Chat.Add(newMessage);

           Console.WriteLine("{0}: {1}", userName, msg);

           Server.UpdateAllChats();

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с доставкой: {0}.", exp.Message); }

   }

   public static void AddLsMessage(string userName, string msg, string au)

   {

       try

       {

           if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(msg) || string.IsNullOrEmpty(au)) return;

           int countMessages = Chat.Count;

           if (countMessages > _maxMessage) ClearChat();

           message newMessage = new message(userName, msg);

           Console.WriteLine("{0}->{2}: {1}", userName, msg, au);

           Server.UpdateAllChatsLS(userName, msg, au);

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с доставкой: {0}.", exp.Message); }

   }

   public static void ClearChat()

   {

       Chat.Clear();

   }

   public static string GetChat()

   {

       try

       {

           string data = "#updatechat&";

           data += String.Format("{0}~{1}", Chat[Chat.Count - 1].userName, Chat[Chat.Count - 1].data);

           return data;

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с отправкой: {0}", exp.Message); return string.Empty; }

   }

   public static string GetChatLS(string userName, string msg, string au)

   {

       try

       {

           string data = "#lss&";

           data += String.Format("{0}~{1}|{2}", msg, userName, au);

           return data;

        }

       catch (Exception exp) { Console.WriteLine("Ошибка с отправкой: {0}", exp.Message); return string.Empty; }

   }

   public static string GetSysMessage(string g)

   {

       try

       {

           string data = "#sys&";

           data += String.Format(g);

           return data;

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с обновлением чата: {0}", exp.Message); return string.Empty; }

   }

   public static string GetPeople()

   {

       try

       {

           string data = "#people&";

           int countMessages = Server.Clients.Count;

           if (countMessages <= 0) return string.Empty;

           for (int i = 0; i < countMessages; i++)

           {

               data += String.Format("{0}|", Server.Clients[i].UserName);

           }

           return data;

       }

       catch (Exception exp) { Console.WriteLine("Ошибка в передаче информации о людях: {0}", exp.Message); return string.Empty; }

   }}}

//-------------------------------------------------------//

Program.cs

//-------------------------------------------------------//

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Net;

using System.Net.Sockets;

using System.Threading;

namespace serverChat

{

class Program

{

   private const string _serverHost = "localhost";

   private const int _serverPort = 9933;

   private static Thread _serverThread;

   static void Main(string[] args)

   {

       _serverThread = new Thread(startServer);

       _serverThread.IsBackground = true;

       _serverThread.Start();

       while (true)

           handlerCommands(Console.ReadLine());

   }

   private static void handlerCommands(string cmd)

   {

       cmd = cmd.ToLower();

       if (cmd.Contains("/getusers"))

       {

           int countUsers = Server.Clients.Count;

           for (int i = 0; i < countUsers; i++)

           {

               Console.WriteLine("[{0}]: {1}", i, Server.Clients[i].UserName);

           }

       }

       else

       { 

       }}

   private static void startServer()

   {

       IPHostEntry ipHost = Dns.GetHostEntry(_serverHost);

       IPAddress ipAddress = ipHost.AddressList[0];

       IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, _serverPort);

       Socket socket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

       socket.Bind(ipEndPoint);

       socket.Listen(1000);

       Console.WriteLine("Сервер запущен по IP: {0}.",ipEndPoint);

       while(true)

       {

           try

           {

               Socket user = socket.Accept();

               Server.NewClient(user);

           }

           catch (Exception exp) { Console.WriteLine("Ошибка: {0}",exp.Message); }

       }}}}

//-------------------------------------------------------//

Server.cs

//-------------------------------------------------------//

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Net.Sockets;

namespace serverChat

{

public static class Server

{

   public static List<Client> Clients = new List<Client>();

   public static void NewClient(Socket handle)

   {

       try

       {

           Client newClient = new Client(handle);

           Clients.Add(newClient);

           Console.WriteLine("Пользователь {0} присоединился", handle.RemoteEndPoint);

           int countUsers = Clients.Count;

           UpdateAllUsers();

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с подключением нового клиента: {0}.",exp.Message); }

   }

   public static void EndClient(Client client)

   {

       try

       {

           client.End();

           Clients.Remove(client);

           Console.WriteLine("Пользователь {0} отсоединился.", client.UserName);

           int countUsers = Clients.Count;

           for (int i = 0; i < countUsers; i++)

           {

               Clients[i].PeopleChat();

           }

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с отключением: {0}.",exp.Message); }

   }

   public static void UpdateAllChats()

   {

       try

       {

           int countUsers = Clients.Count;

           for (int i = 0; i < countUsers; i++)

           {

               Clients[i].UpdateChat();

           }

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с обновлением чатов: {0}.", exp.Message); }

   }

   public static void UpdateAllChatsLS(string userName, string msg, string au)

   {

       try

       {

           int countUsers = Clients.Count;

           for (int i = 0; i < countUsers; i++)

           {

               Clients[i].UpdateChatLS(userName, msg, au);

             }

       }

       catch (Exception exp) { Console.WriteLine("Ошибка с обновлением чатов (ЛС): {0}.", exp.Message); }

   }

   public static void UpdateAllUsers()

   {

       try

       {

           int countUsers = Clients.Count;

           for (int i = 0; i < countUsers; i++)

           {

               Clients[i].PeopleChat();

           }}

       catch (Exception exp) { Console.WriteLine("Ошибка с обновлением списка: {0}.", exp.Message); }

   }}}

//-------------------------------------------------------//

Клиенская часть

//-------------------------------------------------------//

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

using System.Net;

using System.Threading;

using System.Data.SqlClient;

using MySql.Data.MySqlClient;

namespace chatClient   

{

public partial class chatForm: Form

{

   public class LS

   {

       public string chatls { get; set; }

   }

   List<LS> mesls = new List<LS>();

   private delegate void printer(string data);

   private delegate void cleaner();

   printer Printer;

   cleaner Cleaner;

   private Socket _serverSocket;

   private Thread _clientThread;

   private const string _serverHost = "localhost";

   private const int _serverPort = 9933;

   int countls = 0;

   int sells = 0;

   string obh = "";

   string[] ls = new string[999];

   public chatForm()

   {

       InitializeComponent();

   }

   private void listner()

   {

       while (_serverSocket.Connected)

       {

           byte[] buffer = new byte[8196];

           int bytesRec = _serverSocket.Receive(buffer);

           string data = Encoding.UTF8.GetString(buffer, 0, bytesRec);

           if (data.Contains("#updatechat"))

           {

               UpdateChat(data);

               continue;

           }

           if (data.Contains("#sys"))

           {

               Sys(data);

               continue;

           }

           if (data.Contains("#people"))

           {

               People(data);

               continue;

           }

           if (data.Contains("#lss"))

           {

               Ls(data);

               continue;

           }

       }

   }

   private void connect()

   {

       try

       {

           IPHostEntry ipHost = Dns.GetHostEntry(_serverHost);

           IPAddress ipAddress = ipHost.AddressList[0];

           IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, _serverPort);

           _serverSocket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

           _serverSocket.Connect(ipEndPoint);

       }

       catch {

           print("Сервер недоступен!");

       }

   }

   private void clearChat()

   {

       if (this.InvokeRequired)

       {

           this.Invoke(Cleaner);

           return;

       }

       chatBox.Clear();

   }

   private void UpdateChat(string data)

   {

       string messages = data.Split('&')[1];

       if (label5.Text == "Общий чат")

       {

           try

           {

               if (string.IsNullOrEmpty(messages)) { }

               print(String.Format("{0}: {1}", messages.Split('~')[0], messages.Split('~')[1]));

           }

           catch { }

       }

       obh += String.Format("{0}: {1}|", messages.Split('~')[0], messages.Split('~')[1]);

   }

   private void Ls(string data)

   {

       // #lss&mess~userme|useran

       if ((userName.Text == data.Split('~')[1].Split('|')[0]) || ((userName.Text == data.Split('|')[1])))

       {

           if ((label5.Text == data.Split('~')[1].Split('|')[0]) || (label5.Text == data.Split('|')[1]))

           {

               try

                 {

                   if (string.IsNullOrEmpty(data.Split('&')[1].Split('~')[0])) { }

                   print(String.Format("{0}: {1}", data.Split('~')[1].Split('|')[0], data.Split('&')[1].Split('~')[0]));

               }

               catch { }

           }

           if ((label5.Text!= data.Split('~')[1].Split('|')[0]) && (label5.Text!= data.Split('|')[1]))

           {

               print(String.Format("У вас новое личное сообщение от: {0}", data.Split('~')[1].Split('|')[0]));

           }

 

           int ki = 0;

           foreach (LS p in mesls)

           {

               if (p.chatls.Split('&')[0] == data.Split('|')[1])

               {

                   ki = 1;

                   p.chatls += String.Format("{0}: {1}|", data.Split('~')[1].Split('|')[0], data.Split('&')[1].Split('~')[0]);

               }

           }

           if (ki == 0)

           {

               countls++;

               mesls.Add(new LS() { chatls = data.Split('~')[1].Split('|')[0] + "&" + String.Format("{0}: {1}|", data.Split('~')[1].Split('|')[0], data.Split('&')[1].Split('~')[0]) });

           }

       }

   }

   private void Sys(string data)

   {

       string messages = data.Split('&')[1];

       try

       {

           if (string.IsNullOrEmpty(messages)) { }

           print(String.Format("{0}", messages.Split('|')[0]));

       }

       catch { }

   }

   private void People(string data)

   {

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

       string[] peoples = data.Split('&')[1].Split('|');

       listBox1.Items.Clear();

       listBox1.Items.Add("Общий чат");

       int countpeoples = peoples.Length;

       if (countpeoples <= 0) return;

       for (int i = 0; i < countpeoples; i++)

       {

           try

           {

               if (string.IsNullOrEmpty(peoples[i])) continue;

               if ((peoples[i]!= "#people") && (peoples[i]!= userName.Text)) listBox1.Items.Add(String.Format("{0}", peoples[i]));

           }

           catch { continue; }

       }

   }

   private void send(string data)

   {

       try

       {

           byte[] buffer = Encoding.UTF8.GetBytes(data);

           int bytesSent = _serverSocket.Send(buffer);

       }

       catch { print("Связь с сервером прервалась...");}

   }

 

   private void print(string msg)

   {

       if (this.InvokeRequired)

       {

           this.Invoke(Printer, msg);

           return;

       }

       if (chatBox.Text.Length == 0)

           chatBox.AppendText(msg);

       else

           chatBox.AppendText(Environment.NewLine + msg);

   }

   private void enterChat_Click(object sender, EventArgs e)

    {

       string Connect = "server=localhost;uid=root;password=--123--123--fh;persistsecurityinfo=True;database=work";

       string CommandText = "SELECT Count(*) FROM account WHERE name = '" + userName.Text + "' AND pass = '" + textBox1.Text + "' LIMIT 1";

       MySqlConnection myConnection = new MySqlConnection(Connect);

       MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection);

       myConnection.Open();

       myCommand.ExecuteNonQuery();

       MySqlDataAdapter dataAdapter = new MySqlDataAdapter(myCommand);

       DataTable dt = new DataTable();

       dataAdapter.Fill(dt);

       if (dt.Rows[0][0].ToString() == "1")

       {

           try

           {

               string Name = userName.Text;

               if (string.IsNullOrEmpty(Name))

               {

               }

               else

               {

                   Printer = new printer(print);

                   Cleaner = new cleaner(clearChat);

                   connect();

                   _clientThread = new Thread(listner);

                   _clientThread.IsBackground = true;

                   _clientThread.Start();

                  send("#setname&" + Name);

                   chatBox.Enabled = true;

                   chat_msg.Enabled = true;

                   chat_send.Enabled = true;

                   userName.Enabled = false;

                   listBox1.Enabled = true;

                   textBox1.Enabled = false;

                   label4.Text = "Вы подключены: " + userName.Text;

                   userName.Visible = false;

                   textBox1.Visible = false;

                   label5.Visible = true;

                   gui_userName.Visible = false;

                   label1.Visible = false;

                   enterChat.Enabled = false;

                   enterChat.Visible = false;

                   button1.Enabled = false;

                   button1.Visible = false;

                   label2.Visible = false;

                   listBox1.Height = 355;

               }

           }

           catch {

               MessageBox.Show("Ошибка при подключении! Возможно, сервер не отвечает");

           }

       }

       else

       {

           label2.Visible = true;

       }

       myConnection.Close();

   }

      private void chat_send_Click(object sender, EventArgs e)

   {

       sendMessage();

   }

   private void sendMessage()

   {

       if (!chat_msg.Text.Contains("#") &&!chat_msg.Text.Contains("|") &&!chat_msg.Text.Contains("~") && (label5.Text == "Общий чат"))

           try

           {

               string data = chat_msg.Text;

               if (string.IsNullOrEmpty(data))

               {

               }

               else

               {

                   send("#newmsg&" + data);

                   chat_msg.Text = string.Empty;

               }

           }

           catch { MessageBox.Show("Ошибка при отправке сообщения!"); }

       else if (!chat_msg.Text.Contains("#") &&!chat_msg.Text.Contains("|") &&!chat_msg.Text.Contains("~"))

           try

           {

               string data = chat_msg.Text;

               if (string.IsNullOrEmpty(data))

               {

               }

               else

               {

                   send("#newls&" + data + "~" + userName.Text + "|" + label5.Text);

                   chat_msg.Text = string.Empty;

               }

           }

           catch { MessageBox.Show("Ошибка при отправке сообщения!"); }

   }

   private void chatBox_KeyDown(object sender, KeyEventArgs e)

   {

       if (e.KeyData == Keys.Enter)

           sendMessage();

   }

   private void chat_msg_KeyDown(object sender, KeyEventArgs e)

   {

       if (e.KeyData == Keys.Enter)

           sendMessage();

   }

   private void chatForm_Load(object sender, EventArgs e)

   {

   }

     private void userName_TextChanged(object sender, EventArgs e)

   {

   }

   private void textBox1_TextChanged(object sender, EventArgs e)

   {

   }

   private void button1_Click(object sender, EventArgs e)

   {

      string Connect = "server=localhost;uid=root;password=--123--123--fh;persistsecurityinfo=True;database=work";

       string CommandText = "SELECT Count(*) FROM account WHERE name = '" + userName.Text + "' LIMIT 1";

       MySqlConnection myConnection = new MySqlConnection(Connect);

       MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection);

       myConnection.Open();

       myCommand.ExecuteNonQuery();

       MySqlDataAdapter dataAdapter = new MySqlDataAdapter(myCommand);

       DataTable dt = new DataTable();

       dataAdapter.Fill(dt);

       if (dt.Rows[0][0].ToString() == "0")

       {

           CommandText = "INSERT INTO `work`.`account` (`name`, `pass`) VALUES ('" + userName.Text + "', '" + textBox1.Text + "');";

           myCommand = new MySqlCommand(CommandText, myConnection);

           myCommand.ExecuteNonQuery();

       }

       myConnection.Close();

   }

   private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

   {

       if (Convert.ToString(listBox1.SelectedItem) == "Общий чат")

       {

           label5.Text = "Общий чат";

           clearChat();

           string[] messages = obh.Split('|');

           int countMessages = obh.Length;

           if (countMessages <= 0) return;

           for (int i = 0; i < countMessages; i++)

           {

               try

               {

                   if (string.IsNullOrEmpty(messages[i])) continue;

                   print(String.Format(messages[i]));

               }

               catch { continue; }

           }

       }

       else

       {

           int k = 0;

           foreach (LS p in mesls)

           {

               if (p.chatls.Split('&')[0] == Convert.ToString(listBox1.SelectedItem))

               {

                   label5.Text = Convert.ToString(listBox1.SelectedItem);

                   k = 1;

                   clearChat();

                   string[] messages = p.chatls.Split('&')[1].Split('|');

                   int countMessages = p.chatls.Length;

                   if (countMessages <= 0) return;

                   for (int l = 0; l < countMessages; l++)

                   {

                       try

                       {

                           if (string.IsNullOrEmpty(messages[l])) continue;

                           print(String.Format(messages[l]));

                       }

                       catch { continue; }

                   }

               }

           }

           if (k == 0)

           {

               label5.Text = Convert.ToString(listBox1.SelectedItem);

               clearChat();

               mesls.Add(new LS() { chatls = Convert.ToString(listBox1.SelectedItem) + "&" });

           }

       }}}}

ЗАКЛЮЧЕНИЕ

Изучение способов виртуальной коммуникации показало, что наиболее востребованными в современном обществе являются формы и способы синхронной коммуникации. Одним из средств такой коммуникации являются мессенджеры, т.е. системы мгновенного обмена сообщениями, главной особенностью которых является общение в режиме реального времени, практически мгновенная передача сообщения и получение ответа на него.

В то же время очевидно, что популярные мессенджеры, такие как WhatsApp, Viber, Telegram, Facebook Messenger, Skype и другие, разработанные, прежде всего, для повседневного общения и развлечений, имеют, наряду с множеством достоинств (разнообразие функций, возможность пользоваться списком контактов, шифрование сообщений и т.п.) и серьезные недостатки с точки зрения использования их в профессиональном виртуальном общении в рамках организации. Таким недостатками являются, с одной стороны, переполненность мессенджеров разнообразным контентом, который носит развлекательный характер и, с нашей точки зрения, отвлекает от рабочей атмосферы и обстановки, а с другой – отсутствие полной гарантии безопасности корпоративной информации, поскольку переписка хранится на серверах конкретного приложения.

Написанный нами программный продукт реализует такие задачи, как:

- отсутствие развлекательных функций и контента, что позволяет работнику полностью сосредоточится на процессе работы;

- обеспечение безопасности корпоративной информации за счет хранения ее на сервере организации, к которому нет доступа посторонним лицам.

- простота регистрации и пользования мессенджером, что актуально в условиях разного уровня пользовательских навыков сотрудников организации. 

Таким образом данный мессенджер можно использовать в организациях для выполнения быстрой связи сотрудников между собой, без отвлечения на посторонние ресурсы.

 

Доработка данного мессенджера в дальнейшем может идти по таким направлениям, как: возможность пересылать документы для ознакомления; разработка мобильного приложения для использования на смартфонах, возможность использовать приложение не только в стенах организации, но из других мест в случае выезда в командировку.

 

 

СПИСОК ЛИТЕРАТУРЫ

1. Апетян М. К. Особенности виртуальной коммуникации // Молодой ученый. — 2015. — №3. — С. 939-941. — URL https://moluch.ru/archive/83/15418/ (дата обращения: 17.05.2019).

2. Официальный сайт Facebook Messenger: https://www.messenger.com/ (дата обращения: 17.05.2019).

3. Официальный сайт Microsoft (Бесплатная версия Visual Studio): https://visualstudio.microsoft.com/ru/free-developer-offers/ (дата обращения: 17.05.2019).

4. Официальный сайт Skype: https://www.skype.com/ru/ (дата обращения: 17.05.2019).

5. Официальный сайт Viber: https://www.viber.com/ru/ (дата обращения: 17.05.2019).

6. Официальный сайт WhatsApp: https://www.whatsapp.com/?l=ru (дата обращения: 17.05.2019).

7. Официальный сайт Телеграм: https://tlgrm.ru/(дата обращения: 17.05.2019).

8. Руководство по языку C# /Официальный сайт Microsoft: https://docs.microsoft.com/ru-ru/dotnet/csharp/ (дата обращения: 17.05.2019).

9. Система мгновенного обмена сообщениями /https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BC%D0%B3%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%BC%D0%B5%D0%BD%D0%B0_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8 (дата обращения: 17.05.2019).


[1] Апетян М. К. Особенности виртуальной коммуникации // Молодой ученый. — 2015. — №3. — С. 939-941. — URL https://moluch.ru/archive/83/15418/ (дата обращения: 17.05.2019).

[2] Там же.

[3] Система мгновенного обмена сообщениями /https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BC%D0%B3%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%BC%D0%B5%D0%BD%D0%B0_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8 (дата обращения: 17.05.2019).

[4] Официальный сайт WhatsApp: https://www.whatsapp.com/?l=ru (дата обращения: 17.05.2019).

[5] Официальный сайт Viber: https://www.viber.com/ru/ (дата обращения: 17.05.2019).

[6] Официальный сайт Телеграм: https://tlgrm.ru/(дата обращения: 17.05.2019).

[7] Официальный сайт Facebook Messenger:  https://www.messenger.com/ (дата обращения: 17.05.2019).

[8] Официальный сайт Skype: https://www.skype.com/ru/ (дата обращения: 17.05.2019).



Поделиться:


Последнее изменение этой страницы: 2020-11-28; просмотров: 96; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.83.150 (0.355 с.)