Нужен пример простейшего клиент-серверного приложения - 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 = "";
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д