GetIEPVideo() public méthode

public GetIEPVideo ( ) : IPEndPoint
Résultat System.Net.IPEndPoint
Exemple #1
0
        /// <summary>
        /// UDP Server Thread for audio frames
        /// </summary>
        private void UDPThreadAudio()
        {
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            sock.ReceiveBufferSize = 10000000;
            sock.ReceiveTimeout    = 900;
            IPEndPoint iep = new IPEndPoint(IPAddress.Any, _iPortAudio);

            sock.Bind(iep);
            EndPoint ep = (EndPoint)iep;

            int iRead;

            byte[]     data = new byte[10000];
            IPEndPoint iepConv;

            System.Text.Encoding enc;
            enc = System.Text.Encoding.ASCII;
            while (!_bStopServer)
            {
                try
                {
                    iRead = sock.ReceiveFrom(data, ref ep);
                    if (iRead > 0)
                    {
                        //Console.WriteLine("Thread Audio:" + iRead.ToString());

                        /*int iCnt = data[2];
                         * iCnt <<= 8;
                         * iCnt |= data[1];*/
                        switch (data[0])
                        {
                        case CMD_ECHO:
                            sock.SendTo(data, iRead, SocketFlags.None, ep);
                            Program.MainForm.UpdateBytesRX(iRead);
                            break;

                        case CMD_FRM_AUDIO:
                            User usr = Program.MainForm.GetUserFromIPNoPort(ep.ToString());
                            //Console.WriteLine(usr.GetUser() + " > Audio ");
                            iepConv = usr.GetIEPConvAudio();
                            if (iepConv != null)
                            {
                                sock.SendTo(data, iRead, SocketFlags.None, iepConv);
                            }
                            break;

                        case CMD_BIND_USER:
                            data[iRead] = 0;
                            string sTmp        = enc.GetString(data, 1, iRead - 1);
                            User   usrReceiver = Program.MainForm.GetUser(sTmp);
                            User   usrCaller   = Program.MainForm.GetUserFromIPNoPort(ep.ToString());
                            if (usrReceiver != null)
                            {
                                usrCaller.SetIepAudio(ep.ToString());
                                usrCaller.SetIEPConvAudio(usrReceiver.GetIEPAudio());
                                String sCal = usrCaller.GetIEPVideo().Address + ":" + usrCaller.GetIEPVideo().Port;
                                String sDst = usrReceiver.GetIEPVideo().Address + ":" + usrReceiver.GetIEPVideo().Port;
                                Program.MainForm.AddLog("AUDIO BINDING :" + usrCaller.GetUser() + " " + sCal + "-> " + usrReceiver.GetUser() + " " + sDst, "");

                                data[1] = ACK;
                                sock.SendTo(data, 2, SocketFlags.None, ep);
                            }
                            else
                            {
                                Program.MainForm.AddLog(usrCaller.GetUser() + " CANNOT AUDIO BIND ", "");
                                data[1] = NACK;
                                sock.SendTo(data, 2, SocketFlags.None, ep);
                            }
                            break;
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
            sock.Close();
        }