Esempio n. 1
0
        public IPEndPoint StartNeg(bool IsCaller, IPEndPoint[] local, IPEndPoint[] remote)
        {
            if (IsCaller)
            {
                bool done = false;
                for (int i = 0; i < 2; i++)
                {
                    for (int j = 0; j < 2; j++)
                    {
                        if (!done)
                        {
                            IPEndPoint from = local[i];
                            IPEndPoint to   = remote[j];
                            RTPUDPClient.MySend(to.Address.ToString(), to.Port, "tst " + from.ToString());
                            string res = RTPUDPClient.MyReceive1(4505);
                            if (res == "Success")
                            {
                                RTPUDPClient.MySend(to.Address.ToString(), to.Port, "fin " + from.ToString());
                                return(to);
                            }
                        }
                    }
                }
                return(null);
            }
            else
            {
top:
                string message = RTPUDPClient.MyReceive(4505);
                string mestype = message.Substring(0, 3);
                string remain  = message.Substring(4);
                if (mestype.Equals("fin"))
                {
                    return(new IPEndPoint(IPAddress.Parse(remain.Substring(0, remain.IndexOf(':'))), Convert.ToInt32(remain.Substring(remain.IndexOf(':') + 1))));
                }
                else if (mestype.Equals("tst"))
                {
                    IPEndPoint to = new IPEndPoint(IPAddress.Parse(remain.Substring(0, remain.IndexOf(':'))), Convert.ToInt32(remain.Substring(remain.IndexOf(':') + 1)));
                    RTPUDPClient.MySend(to.Address.ToString(), to.Port, "Success");
                    goto top;
                }
            }
            return(null);
        }
Esempio n. 2
0
 public string TestRecv()
 {
     return(RTPUDPClient.MyReceive1(4507));
 }