Friday, May 22, 2009 8:05 AM Yonggang Meng

Use UdpClient to send and receive message

Client to receive message sent by server:
 
   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.ComponentModel;
   4:  using System.Data;
   5:  using System.Drawing;
   6:  using System.Linq;
   7:  using System.Text;
   8:  using System.Windows.Forms;
   9:  using System.Net.Sockets;
  10:  using System.Threading;
  11:  using System.Net;
  12:   
  13:  namespace NoticeSystemClient
  14:  {
  15:      public partial class MainForm : Form
  16:      {
  17:          public delegate void ShowMessage(string message);
  18:          public ShowMessage myDelegate;
  19:          Int32 port = 11000;
  20:          UdpClient udpClient = new UdpClient(11000);
  21:          Thread thread;
  22:          public MainForm()
  23:          {
  24:              //CheckForIllegalCrossThreadCalls = false;
  25:              InitializeComponent();
  26:          }
  27:   
  28:          private void MainForm_KeyDown(object sender, KeyEventArgs e)
  29:          {
  30:              if (e.KeyCode == Keys.Escape)
  31:              {
  32:                  thread.Abort();
  33:                  udpClient.Close();
  34:                  Close();
  35:              }
  36:          }
  37:   
  38:          private void ReceiveMessage()
  39:          {                      
  40:              while (true)
  41:              {
  42:                  IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, port);
  43:                  byte[] content = udpClient.Receive(ref remoteIPEndPoint);
  44:   
  45:                  if (content.Length > 0)
  46:                  {
  47:                      string message = Encoding.ASCII.GetString(content);
  48:                      
  49:                      this.Invoke(myDelegate, new object[] { message });
  50:                  }
  51:              }
  52:          }
  53:   
  54:   
  55:          private void ShowMessageMethod(string message)
  56:          {
  57:              richText.Text = message;
  58:          }
  59:   
  60:          private void MainForm_Load(object sender, EventArgs e)
  61:          {            
  62:              myDelegate = new ShowMessage(ShowMessageMethod);
  63:              thread = new Thread(new ThreadStart(ReceiveMessage));
  64:              thread.IsBackground = true;
  65:              thread.Start();
  66:          }
  67:      }
  68:  }

Server:

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.ComponentModel;
   4:  using System.Data;
   5:  using System.Drawing;
   6:  using System.Linq;
   7:  using System.Text;
   8:  using System.Windows.Forms;
   9:  using System.Net.Sockets;
  10:  using System.Net;
  11:   
  12:  namespace NoticeSystem
  13:  {
  14:      public partial class MainForm : Form
  15:      {
  16:          UdpClient udpClient = new UdpClient();
  17:          public MainForm()
  18:          {
  19:              InitializeComponent();
  20:          }
  21:   
  22:          private void btnClose_Click(object sender, EventArgs e)
  23:          {
  24:              udpClient.Close();
  25:              Close();
  26:          }
  27:   
  28:          private void btnSend_Click(object sender, EventArgs e)
  29:          {
  30:              Int32 port = 11000;
  31:              IPAddress ip = IPAddress.Parse(txtStartIP.Text.Trim());
  32:              IPEndPoint ipEndPoint = new IPEndPoint(ip,port);
  33:              byte[] content = Encoding.ASCII.GetBytes(richText.Text);
  34:              try
  35:              {
  36:                  int count = udpClient.Send(content, content.Length, ipEndPoint);
  37:                  if (count > 0)
  38:                  {
  39:                      MessageBox.Show("Message has been sent.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
  40:                  }
  41:              }
  42:              catch
  43:              {
  44:                  MessageBox.Show("Error occurs.", "Exclamation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  45:              }
  46:          }
  47:      }
  48:  }

There’s no more to say but the Client source code, red words.

We must indicate the port of the UdpClient, otherwise, it will pop errors.

code:

UdpClient udpClient = new UdpClient(11000);

At the outset, i don’t indicate the port, so when i debug the code, there’s nothing happen on client side.

Source code disassembled by Red Gate’s .Net Reflector of the UdpClient:

   1:  public UdpClient(int port) : this(port, AddressFamily.InterNetwork)
   2:  {
   3:  }

 

   1:  public UdpClient(int port, AddressFamily family)
   2:  {
   3:      IPEndPoint point;
   4:      this.m_Buffer = new byte[0x10000];
   5:      this.m_Family = AddressFamily.InterNetwork;
   6:      if (!ValidationHelper.ValidateTcpPort(port))
   7:      {
   8:          throw new ArgumentOutOfRangeException("port");
   9:      }
  10:      if ((family != AddressFamily.InterNetwork) && (family != AddressFamily.InterNetworkV6))
  11:      {
  12:          throw new ArgumentException(SR.GetString("net_protocol_invalid_family"), "family");
  13:      }
  14:      this.m_Family = family;
  15:      if (this.m_Family == AddressFamily.InterNetwork)
  16:      {
  17:          point = new IPEndPoint(IPAddress.Any, port);
  18:      }
  19:      else
  20:      {
  21:          point = new IPEndPoint(IPAddress.IPv6Any, port);
  22:      }
  23:      this.createClientSocket();
  24:      this.Client.Bind(point);
  25:  }
 
You will find that the UdpClient need a port to bind to to listen the IPENDPOINT.
Filed under: , , ,

Comments

# Use UdpClient to send and receive message - YongGang Meng's Weblog

Pingback from  Use UdpClient to send and receive message - YongGang Meng's Weblog

# Use UdpClient to send and receive message | rapid-DEV.net

Pingback from  Use UdpClient to send and receive message | rapid-DEV.net

# re: Use UdpClient to send and receive message

Wednesday, August 05, 2009 6:35 AM by Sumit

Work for me...Thanks....

# re: Use UdpClient to send and receive message

Thursday, December 30, 2010 4:29 PM by Quan

Hi Meng,

I am using the UDP Client for my project. I have problem when the local network card got disconnected. My design requires me to keep on detecting the reconnection of the interface if disconnected. I attached my code as below:

       void ReConnect_Local_A()

       {

           while (true)

           {

               try

               {  

                   // Make new UDP Client object

                   IPEndPoint ipLocalEndPointA = new IPEndPoint(IPAddress.Parse(localIPA), localPortNum);

                   UDPClientA = new UdpClient(ipLocalEndPointA);

                   // Otherwise successful

                   ConnectionA_Flag = true;

                   break;

               }

               catch (Exception e)

               {

                   // Not sucecesful, close & reopen

                   MessageBox.Show(e.ToString());

                   UDPClientA.Close();

                   UDPClientA = null;  // to dispose UDPClient  object

                   System.Threading.Thread.Sleep(500);

               }

           }

       }

It throughs exception of "The requested address is not valid on its context at the line of "UDPClientA = new UdpClient(ipLocalEndPointA);"

Do you know why? Thanks for help!

# re: Use UdpClient to send and receive message

Thursday, February 28, 2013 1:06 PM by orannalarousy

Благодеяние приходить в наш игровой портал. Для нашем портале представлен громадный ассортимент лицензионных CD и DVD дисков: фильмов на DVD, компьютерных игр, в том числе и детских игр, а также лицензионные программы, музыка-MP3, аудиокниги. Беспричинно же вы можете приобрести у нас зрелище ради консолей: Playstation 3, Nintendo Wii, Xbox 360 и другие. В нашем магазине вы сможете найти компьютерные зрелище различных жанров: стратегии, симуляторы, логические игры, экшен, приключенческие зрелище, квесты, игры-ужасы и некоторый другие. Выше список cd дисков ежесекундно пополняется, и вы навсегда сможете найти у нас самые последние новинки, а беспричинно же игры, ставшие классикой. Мы отправляем CD и DVD почтой по всей России.

Часть "Новинки компьютерных игр" пополняется еженедельно - у нас Вы сможете найти всегда последние игровые новники, выпущенные в России.Для наших постоянных покупателей действуют накопительные скидки.

Приятных покупок!

# re: Use UdpClient to send and receive message

Monday, March 11, 2013 5:39 AM by vakusapp

Здравствуйте

Возникла проблема,не могу писать посты на форуме, часто выдает

ошибку FlashScript 458 Error

Что это может быть ?

# re: Use UdpClient to send and receive message

Friday, April 19, 2013 10:19 PM by DarrartiemRer

Как прогнать свой сайт? Как поднять посещаемость? Как поднять Тиц и Pr?

Прогон по каталогам ничего не дает, мы предлогаем уникальную возможность прогона по дешевым ценам!

СУПЕР ПРОГОН ВАШЕГО САЙТА: (icq 618204327)

<b>ТАРИФЫ:</b>

Регистрация в 5000 каталогах  сайтов (350 руб)

_______________________________________

Тарифы прогона сайта по профилям:

Регистрация 10000 профилей на разных сайтах ( с вашими сылками внутри аккаунтов) ВСЕГО 400 руб !!!!!

Регистрация 200000 профилей на разных форумах ( с вашими сылками внутри аккаунтов) ВСЕГО 4800 руб !!!!!

_______________________________________

Тарифы прогона сайта по тарифу солянка:

Размещение сообщения  на 10000 сайтов  Всего 350 руб

Размещение сообщения  на 600000 сайтов  Всего 8000 руб

___________________________________________

Наши тарифы прогона сайта по комментариям:

Размещение комментариев на 3000 сайтов (Размещается комментарий на сайтах с вашим объявлением или сылкой на сайт) Всего 400 руб

Размещение комментариев на 10000 сайтов (Размещается комментарий на сайтах с вашим объявлением или сылкой на сайт) Всего 1000 руб

Для оформления заказа вам необходимо написать в Icq 618204327 для связи!

Гарантия! Полный отчет!

А также Скидки постоянным клиентам до 20%!!!! Много различных и комплексных тарифов!!!!

06.04.13

# re: Use UdpClient to send and receive message

Saturday, May 11, 2013 4:36 AM by avemairee

До того, как обратиться в агентство недвижимости я читала множество отзывов. Отзывы о ЕГСН составили наиболее подробную картину работы агентства. Из этих отзывов я узнала, то, что интересовало меня. Оказалось, что Единая городская служба недвижимости занимается проведением ипотечных сделок от самого начального этапа до финала. Так как бегать по банкам у меня времени не было, меня это более чем устраивало. Мой риелтор -  Юрий Юрьевич Кириенко меня привлекал только собственно к просмотру квартир и подписанию документов. Всеми остальными формальностями, как довнесение всяких справок в банк, вызов оценщика на квартиру, заказ ячейки и т.д. занимался сам.  Вот за это и хочу сказать ему большое спасибо!

# re: Use UdpClient to send and receive message

Thursday, May 30, 2013 11:56 PM by bupsAppesouts

Продаю Редиректы:

- Редиректы Short URL

- Редиректы Mix

- Редиректы Cwahi.net

- Редиректы 0Webhost

- Редиректы 0catch

- Редиректы Dot.tk

По всем вопросам пишите сразу в аську ICQ 231538