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

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

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

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

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

textual
Листинг программы
using System;
using System.ComponentModel;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
 
namespace UDPServer
{
    public partial class Form1 : Form
    {
        string nameUser = "User1";
        Socket socket;
        EndPoint Rempoint;
        IPEndPoint ipe;
        IPEndPoint ipeCL;
        byte[] buffer = new byte[256];
        string str;
 
        public Form1()
        {
            InitializeComponent();
        }
      
        private void Form1_Load(object sender, EventArgs e)
        {
            // Инициализируем сокет
            // socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            // настраиваем параметр соединения
            ipeCL = new IPEndPoint(IPAddress.Broadcast, 5400);
 
 
 
            // инициализируем сокет
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            // устаавливаем параметры сокета
            // время приема ограничиваем 10 сек.
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 10000);
            // создаем параметр подключения
            ipe = new IPEndPoint(IPAddress.Any, 5400);
            // связываем сокет с параметром подключения
            socket.Bind(ipe);
            // создаем структуру удаленного сокета
            IPAddress ipRem = IPAddress.Any;
            IPEndPoint Rem = new IPEndPoint(ipRem, 0);
            Rempoint = (EndPoint)Rem;
            label1.Text = "Ожидаем данные";
 
            timer1.Enabled = true;
        }
        // кнопка приема данных
        private void button2_Click(object sender, EventArgs e)
        {
            // прием данных от удаленного сокета
            socket.ReceiveFrom(buffer, ref Rempoint);
            // формирование строки сообщения из полученного массива байт
            str = Encoding.Default.GetString(buffer);
            label1.Text = "Прием данных закончен!";
            // отображение сообщения в текстовом поле
            richTextBox1.Text += "\n" + str;
        }
 
        private void button2_Click_1(object sender, EventArgs e)
        {
            socket.Close();
            Application.Exit();
        }
 
        private void DataTransferBtn_Click(object sender, EventArgs e)
        {
            // добавляем в начало сообщение имя пользователя
            string str = nameUser + ":\n" + richTextBox2.Text;
            // разрешение широковещательного адреса
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
            // формируем байтовый массив для передачи
            byte[] paket = Encoding.Default.GetBytes(str);
            // проверка на размер сообщения
            if (paket.Length > 256)
            {
                MessageBox.Show("Сообщение превышает допустимый размер!\nПопробуйте уменьшить сообщение", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                // отправка сообщения
                socket.SendTo(paket, ipeCL);
                label1.Text = "Передача данных закончена!";
                richTextBox2.Text = "";
            }
        }
    }
}

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


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

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

10   голосов , оценка 3.8 из 5
Похожие ответы