Нужен пример простейшего клиент-серверного приложения - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Прчитал примеры в MSDN, скачал книжку Сетевое программироване, но понять пока нечего не получается в сетевых приложениях. Помогите написать минимальный код чтобы с компьютера А переслать сообщение компьютеру Б. Желательно используя Ip адреса. Заранее спасибо.

Решение задачи: «Нужен пример простейшего клиент-серверного приложения»

textual
Листинг программы
  1. using System;
  2. using System.ComponentModel;
  3. using System.Net;
  4. using System.Net.Sockets;
  5. using System.Text;
  6. using System.Windows.Forms;
  7.  
  8. namespace UDPServer
  9. {
  10.     public partial class Form1 : Form
  11.     {
  12.         string nameUser = "User1";
  13.         Socket socket;
  14.         EndPoint Rempoint;
  15.         IPEndPoint ipe;
  16.         IPEndPoint ipeCL;
  17.         byte[] buffer = new byte[256];
  18.         string str;
  19.  
  20.         public Form1()
  21.         {
  22.             InitializeComponent();
  23.         }
  24.      
  25.         private void Form1_Load(object sender, EventArgs e)
  26.         {
  27.             // Инициализируем сокет
  28.             // socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  29.             // настраиваем параметр соединения
  30.             ipeCL = new IPEndPoint(IPAddress.Broadcast, 5400);
  31.  
  32.  
  33.  
  34.             // инициализируем сокет
  35.             socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  36.             // устаавливаем параметры сокета
  37.             // время приема ограничиваем 10 сек.
  38.             socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 10000);
  39.             // создаем параметр подключения
  40.             ipe = new IPEndPoint(IPAddress.Any, 5400);
  41.             // связываем сокет с параметром подключения
  42.             socket.Bind(ipe);
  43.             // создаем структуру удаленного сокета
  44.             IPAddress ipRem = IPAddress.Any;
  45.             IPEndPoint Rem = new IPEndPoint(ipRem, 0);
  46.             Rempoint = (EndPoint)Rem;
  47.             label1.Text = "Ожидаем данные";
  48.  
  49.             timer1.Enabled = true;
  50.         }
  51.         // кнопка приема данных
  52.         private void button2_Click(object sender, EventArgs e)
  53.         {
  54.             // прием данных от удаленного сокета
  55.             socket.ReceiveFrom(buffer, ref Rempoint);
  56.             // формирование строки сообщения из полученного массива байт
  57.             str = Encoding.Default.GetString(buffer);
  58.             label1.Text = "Прием данных закончен!";
  59.             // отображение сообщения в текстовом поле
  60.             richTextBox1.Text += "\n" + str;
  61.         }
  62.  
  63.         private void button2_Click_1(object sender, EventArgs e)
  64.         {
  65.             socket.Close();
  66.             Application.Exit();
  67.         }
  68.  
  69.         private void DataTransferBtn_Click(object sender, EventArgs e)
  70.         {
  71.             // добавляем в начало сообщение имя пользователя
  72.             string str = nameUser + ":\n" + richTextBox2.Text;
  73.             // разрешение широковещательного адреса
  74.             socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
  75.             // формируем байтовый массив для передачи
  76.             byte[] paket = Encoding.Default.GetBytes(str);
  77.             // проверка на размер сообщения
  78.             if (paket.Length > 256)
  79.             {
  80.                 MessageBox.Show("Сообщение превышает допустимый размер!\nПопробуйте уменьшить сообщение", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  81.             }
  82.             else
  83.             {
  84.                 // отправка сообщения
  85.                 socket.SendTo(paket, ipeCL);
  86.                 label1.Text = "Передача данных закончена!";
  87.                 richTextBox2.Text = "";
  88.             }
  89.         }
  90.     }
  91. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы