Нужен пример простейшего клиент-серверного приложения - 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 = "";
}
}
}
}