Пример #1
0
        public static void Main(string[] args)
        {
            using (UdtSocket server = new UdtSocket(ProtocolType.IPv4, SocketType.Dgram))
            {
                server.Bind(new IPEndPoint(IPAddress.Loopback, 8888));
                server.Listen(10);

                while (true)
                {
                    IPEndPoint remoteEp;
                    UdtSocket  socket = server.Accept(out remoteEp);
                    ThreadPool.QueueUserWorkItem(ReceiveMessage, new object[] { socket, remoteEp });
                }
            }
        }
Пример #2
0
        static UdtSocket PeerConnect(Socket socket, string remoteAddr, int remotePort)
        {
            bool bConnected = false;
            int  retry      = 0;

            UdtSocket client = null;

            while (!bConnected)
            {
                try
                {
                    DateTime now = InternetTime.Get();

                    int sleepTimeToSync = SleepTime(now);

                    Console.WriteLine("[{0}] - Waiting {1} sec to sync with other peer",
                                      now.ToLongTimeString(),
                                      sleepTimeToSync);
                    System.Threading.Thread.Sleep(sleepTimeToSync * 1000);

                    GetExternalEndPoint(socket);

                    if (client != null)
                    {
                        client.Close();
                    }

                    client = new UdtSocket(socket.AddressFamily, socket.SocketType);
                    client.Bind(socket);

                    Console.Write("\r{0} - Trying to connect to {1}:{2}.  ",
                                  retry++, remoteAddr, remotePort);

                    client.Connect(new IPEndPoint(IPAddress.Parse(remoteAddr), remotePort));

                    Console.WriteLine("Connected successfully to {0}:{1}",
                                      remoteAddr, remotePort);

                    bConnected = true;
                }
                catch (Exception e)
                {
                    Console.Write(e.Message.Replace(Environment.NewLine, ". "));
                }
            }

            return(client);
        }