Как написать простой UDP чат на .NET
Пишем простой UDP чат на .NET.
Особенности сетевого протокола UDP
Протокол UDP – распространённый сетевой пакетный протокол передачи данных по сети Ethernet. Он отличается от другого распространённого протокола TCP в основном тем, что не требует подтверждения доставки пакета. То есть протокол не даёт гарантии, что ваши данные будут получены адресатом или буду получены полностью и в том порядке, в каком были отправлены. Эта одна сторона медали. Вторая же заключается в том, что из-за отсутствия проверок успеха доставки и повторных отправлений при сбоях, скорость обмена данными возрастает. В нашем простеньком чате это не будет иметь особого значения, но если решим создать приложение посерьёзнее, то будем помнить об этой особенности протокола UDP.
Общая идея UDP чата
Я покажу общую идею реализации. Для ясности демонстрации идеи, предположим, что чат у нас будет односторонним. Это будут две программы, одна из которых станет передатчиком сообщений, назовём её условно UDP Sender, а вторая – приёмником – UDP Receiver. Для полноценного чата нужно реализовывать многопоточное приложение с двунаправленной связью. Писать будем на VB.NET.
Реализация отправителя данных "UDP Sender"
Сначала напишем код отправителя данных (на VB.NET).
Реализация отправителя "UDP Sender" (разворачивается)
Imports System.Net.Sockets Sub Main(ByVal hostName as String, ByVal port as Integer) Using udpClient As New UdpClient udpClient.Connect(hostName, port) udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, True) Do Console.Write("Введите сообщение: ") Dim msg As String = Console.ReadLine() Dim arrayToSend As Byte() = Encoding.Unicode.GetBytes(msg) udpClient.Send(arrayToSend, arrayToSend.Length) Loop End Using End Sub
Реализация получателя данных "UDP Receiver"
Теперь напишем код приёмной стороны (на VB.NET).
Реализация приёмника "UDP Receiver" (разворачивается)
Imports System.Net Imports System.Net.Sockets Sub Main() Dim endPt As New IPEndPoint(IPAddress.Any, ListenPort) Using udpClient As New UdpClient() udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, True) udpClient.Client.Bind(endPt) Do Dim recieved As Byte() = udpClient.Receive(endPt) Dim msg As String = Encoding.Unicode.GetString(recieved) Console.Write("Получено сообщение: ") Console.WriteLine(msg) Loop End Using End Sub
Добавим диалоги, запрашивающие параметры подключения и предлагающие ввести сообщение, чтобы пользователю было удобнее в нашем чате. В итоге у нас получилось вот такое симпатичное приложение UDP чата.
Теперь, при желании, не сложно реализовать чат, обеспечивающий двухстороннюю связь.
Скачать программы "UDP Sender" и "UDP Receiver"
Готовое приложение UDP чата можно скачать по ссылкам:
- Скачать UDP Sender и UDP Receiver с Depositfiles.com
- Скачать UDP Sender и UDP Receiver с Up-4ever.com
- Скачать UDP Sender и UDP Receiver с File-upload.com
- Скачать UDP Sender и UDP Receiver с Hitfile.net
Работает наш чат под ОС Windows и требует .NET 3.5.