using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
 
namespace RegistryKeyForVCA
{
   public  class UDPRideo
    {
       Thread SThread;
       public UDPRideo()
       {
           //runVoke voke = new runVoke(this.startSock);
           //voke();
           SThread = new Thread(new ThreadStart(startSock));
           SThread.Name = "UDP-" + DateTime.UtcNow.Ticks;
           //Trace.WriteLine("W3S 开始新的接收进程," + SThread.Name);
           SThread.Start();
       }
 
       ///
       /// 开始侦听端口
       ///
       ///
       bool bRecieve = true;
       Socket sock;
       private void startSock()
       {
           try
           {
               sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
               IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
               sock.Bind(iep);
               EndPoint ep = (EndPoint)iep;
               Console.WriteLine("Ready to receive…");
 
               byte[] data;
               int recv;
               string stringData;
               this.bRecieve = true;
               while (this.bRecieve)
               {
                   data = new byte[1024];
                   recv = sock.ReceiveFrom(data, ref ep);
                   stringData = Encoding.ASCII.GetString(data, 0, recv);
                   Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString());
               }
               sock.Close();
           }
           catch (Exception e)
           {
               
           }
       }
       public void sendUDP()
       {
          // Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp);
           IPEndPoint iep1 = new IPEndPoint(IPAddress.Broadcast, 9050);//255.255.255.255
           IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("192.168.1.255"), 9050);
           string hostname = Dns.GetHostName();
           byte[] data = Encoding.ASCII.GetBytes(hostname);
           sock.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.Broadcast, 1);
           sock.SendTo(data, iep1);
           sock.SendTo(data, iep2);
           //sock.Close();
       }
    }
}
posted on 2014-09-28 10:43  kingreatwill  阅读(708)  评论(0)    收藏  举报