May 2009 - Posts

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.

Recently, we need import some data from excel to  Oracle database. A strange thing confused me.

The excel file has a column, for example PhoneNumber, the format is 999999,

here are some example data:

  • 123456
  • 234561
  • 345612
  • 456123
  • 561234
  • 612345
  • 000123
  • 000231
  • 000312

When i use the following code to select data, something is strange.

   1:  string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + ftpFile.PostedFile.FileName + ";" 
   2:                   + "Extended Properties=\"Excel 8.0;IMEX=1\"";
   3:  DataSet ds = new DataSet();
   4:  string strSql = "select * from [Sheet1$]";
   5:  using (OleDbDataAdapter adp = new OleDbDataAdapter(strSql, strConn))
   6:  {
   7:        adp.Fill(ds, "Phone");
   8:  }

view the ds data, you will find this:

  • 123456
  • 234561
  • 345612
  • 456123
  • 561234
  • 612345
  •             

if i change the number format to text, i still can not retrieve the number start with 000.

 

I don’t know why, finally i change every number to string in excel file. for example: 123456---> ‘123456 and 000123--->’000123. it works.

anyone who has a good solution for this?

More Posts