• LogWriter sinfiga umumiy nuqtai
  • Ilova B. Mijoz ilovasining manba qismlari Mijoz sinfiga umumiy nuqtai
  • Udp protokoli asosida videokonferensiya dasturiy ta'minotini yaratish. Mundarija




    Download 485,25 Kb.
    bet14/15
    Sana19.12.2023
    Hajmi485,25 Kb.
    #124231
    1   ...   7   8   9   10   11   12   13   14   15
    Bog'liq
    UDP protokoli asosida videokonferensiya dasturiy ta\'minotini yaratish

    Ulanish sinfiga umumiy nuqtai

    sinf ulanishi
    {
    // ulanish klassi - ma'lumotlarni uzatish uchun nom, oqim, rozetka, oqimni o'z ichiga oladi
    umumiy string nomi;
    umumiy rozetka;
    public Thread Thread;
    ommaviy bekor SendClientInfo (ClientInfo ma'lumoti)
    {
    // ulanish ma'lumotlarini yuborish - ism, manzil va port

    NetworkWriter.WriteClientInfo(Soket, ma'lumot);


    }
    public void SendRequest (bayt turi, String manzili, int port)
    {
    NetworkWriter.WriteType(Soket, tur);
    NetworkWriter.WriteClientInfo(Soket,
    yangi ClientInfo(Ism, manzil, port));
    }
    }

      1. LogWriter sinfiga umumiy nuqtai

    sinf LogWriter
    {
    String fayl nomi;
    ommaviy LogWriter (String nomi)
    {
    fayl nomi = nomi;
    }
    public void Write(String s)
    {
    StreamWriter wr = yangi StreamWriter(fayl nomi, rost);
    wr.WriteLine(DateTime.Now.ToString() + " : " + s + "\n");
    wr.Close();
    }
    }
    Ilova B. Mijoz ilovasining manba qismlari

    1. Mijoz sinfiga umumiy nuqtai

    sinf mijozi
    {
    // mijoz klassi - foydalanuvchi nomi va parolni o'z ichiga oladi;
    // TCP va UDP rozetkasi, ma'lumotlarni uzatish uchun oqim
    String nomi;
    String parol;
    Soket tcp_socket;
    Ip ip;
    VideoReceiver qabul qiluvchisi;
    VideoSender jo'natuvchisi;
    bog'langan_mijozlar ro'yxati;
    umumiy ro'yxat ConnectedUsers;
    ommaviy EmptyHandler ClientConnectedHandler;
    ommaviy EmptyHandler ClientDisconnectedHandler;
    ommaviy RequestHandler TransferRequestHandler;
    umumiy MessageHandler TransferFailedHandler;
    umumiy string nomi
    {
    get { qaytish nomi; }
    set {ism = qiymat; }
    }
    umumiy string parol
    {
    olish { parolni qaytarish; }
    set { parol = qiymat; }
    }
    ommaviy mijoz (String host, String n, String p, bool reg,
    PictureBox pb, Videodeskriptor tavsifi)
    {
    // tayinlash original ma'lumotlar
    ism = n;
    parol = p;
    connect_clients = new List();
    ConnectedUsers = yangi ro'yxat();
    // rozetka yarating va serverga ulaning
    tcp_socket = yangi soket (AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp);
    tcp_socket.Connect(host, 11000);
    // ishga tushirish jo'natuvchi Va oluvchi video
    int port = ((IPEndPoint)tcp_socket.LocalEndPoint).Port - 10000;
    IPAddress manzili = ((IPEndPoint)tcp_socket.LocalEndPoint).Manzil;
    jo'natuvchi = yangi VideoSender (dec, addr, port);
    qabul qiluvchi = yangi VideoReceiver (pb, addr, port + 1);

    // avtorizatsiya funktsiyasini chaqiring va mijozlar haqida ma'lumot qo'shing


    Avtorizatsiya (reg);


    //SetConnectedClients();
    // xabarlarni qayta ishlash uchun mavzu yaratish
    mavzu = yangi mavzu (ReadMessage);
    thread.IsBackground = rost;
    thread.Start();
    }
    avtorizatsiyani bekor qilish (bool registr)
    {
    // ruxsat
    bayt b;
    agar (ro'yxatdan o'tish == rost)
    b = (bayt)Xabarlar.Registratsiya;
    boshqa
    b = (bayt) Xabarlar. Avtorizatsiya;
    // xabar turi va foydalanuvchi ma'lumotlarini yuborish
    NetworkWriter.WriteType(tcp_socket, b);
    NetworkWriter.WriteClientRecord(tcp_socket, yangi ClientRecord(nom, parol));
    NetworkWriter.WriteClientInfo(tcp_socket, yangi ClientInfo(nomi,
    sender.GetEndPoint().Address.ToString(), sender.GetEndPoint().Port));
    // Va kutyapmiz javob
    b = NetworkReader.ReadType(tcp_socket);
    ProcessMessage(b);
    }
    ReadMessage() bekor qilinadi
    {
    esa (to'g'ri)
    {
    // xabar turini o'qing va tegishli amallarni bajaring
    bayt b = NetworkReader.ReadType(tcp_socket);
    ProcessMessage(b);
    }
    }
    void ProcessMessage (bayt turi)
    {
    kalit (turi)
    {
    case (bayt)Messages.RegistrationFailed:
    {
    throw (yangi Istisno("Ushbu nomli foydalanuvchi allaqachon ro'yxatdan o'tgan"));
    }
    case (bayt)Xabarlar.RegistratsiyaMuvaffaqiyat:
    {
    sindirish;
    }
    case (bayt)Xabarlar.AuthorizationFailed:
    {
    otish (yangi istisno (" Foydalanuvchi Bilan shunga o'xshash nomi allaqachon Ro'yxatga olingan "));
    }
    case (bayt)Xabarlar.AuthorizationSuccess:
    {
    sindirish;
    }
    case (bayt)Messages.ClientAllredyConnect:
    {
    tashlash (yangi Istisno(" Polzovatel s shunday imenem uje v seti "));
    }
    case (bayt)Messages.ClientInfo:
    {
    ClientInfo();
    sindirish;
    }
    case (bayt)Messages.ClientConnected:
    {
    NewClientConnected();
    sindirish;
    }
    case (bayt)Messages.ClientDisconnected:
    {
    ClientDisconnected();
    sindirish;
    }
    case (bayt)Messages.TransferRequest:
    {
    TransferAnswer();
    sindirish;
    }
    case (bayt)Xabarlar.TransferFailed:
    {
    TransferFail();
    sindirish;
    }
    case (bayt)Messages.TransferSuccess:
    {
    BeginVideoTranslation();
    sindirish;
    }
    case (bayt)Messages.TransferEnd:
    {
    EndVideoTranslation();
    sindirish;
    }
    }
    }
    bekor NewClientConnected()
    {
    // ulanish yangi mijoz
    // yangi mijoz haqidagi ma'lumotlarni o'qing va uni tegishli ro'yxatlarga qo'shing
    ClientInfo info = NetworkReader.ReadClientInfo(tcp_socket);
    ConnectedUsers.Add(info.Name);
    connect_clients.Add(ma'lumot);
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.InfoForClient);
    NetworkWriter.WriteString(tcp_socket, info.Name);
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.ClientInfo);
    NetworkWriter.WriteClientInfo(tcp_socket, yangi ClientInfo(nomi,
    sender.GetEndPoint().Address.ToString(), sender.GetEndPoint().Port));
    // dastur oynasida yangi foydalanuvchini aks ettirish uchun hodisani ko'taring
    ClientConnectedHandler();
    }
    void ClientInfo()
    {
    ClientInfo info = NetworkReader.ReadClientInfo(tcp_socket);
    ConnectedUsers.Add(info.Name);
    connect_clients.Add(ma'lumot);
    // dastur oynasida yangi foydalanuvchini aks ettirish uchun hodisani ko'taring
    ClientConnectedHandler();
    }
    void ClientDisconnected()
    {
    // foydalanuvchini uzish
    // foydalanuvchi haqidagi ma'lumotlarni o'qing va uni ro'yxatlardan olib tashlang
    ClientInfo info = NetworkReader.ReadClientInfo(tcp_socket);
    ConnectedUsers.Remove(info.Name);
    foreach (connect_clients-dagi ClientInfo ma'lumotlari)
    {
    agar (inf.Name == info.Name)
    {
    connect_clients.Remove(ma'lumot);
    sindirish;
    }
    }
    // dastur oynasida foydalanuvchilar ro'yxatini yangilash uchun hodisani chaqiring
    ClientDisconnectedHandler();
    }
    Void SetConnectedClients()
    {
    // bog'langan foydalanuvchilar ro'yxatini olish
    List list = new List();
    // yuborish iltimos
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.ClientInfo);
    // ulangan foydalanuvchilar sonini o'qing
    int mijozlar _ soni = ( int ) NetworkReader . ReadType ( tcp_socket ) ; _
    // va ularning har biri haqida ma'lumot
    uchun (int i = 0; i < clients_count; i++)
    {
    ClientInfo info = NetworkReader.ReadClientInfo(tcp_socket);
    ConnectedUsers.Add(info.Name);
    connect_clients.Add(ma'lumot);
    }
    }
    umumiy bekor TransferRequest(String user_name)
    {
    // otpravlyaem polzovatelyu s imenem user_name zapros na soedinenie
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.InfoForClient);
    NetworkWriter.WriteString(tcp_socket, user_name);
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.TransferRequest);
    NetworkWriter.WriteClientInfo(tcp_socket, yangi ClientInfo(nomi,
    sender.GetEndPoint().Address.ToString(), sender.GetEndPoint().Port));
    }
    Void TransferAnswer()
    {
    // foydalanuvchiga javob yuborish
    // uning ma'lumotlarini o'qing
    ClientInfo info = NetworkReader.ReadClientInfo(tcp_socket);
    // chop etish yoqilgan ekran interaktiv oyna
    agar (TransferRequestHandler(info.Name) == rost)
    // video qo'ng'iroqda foydalanuvchiga rozilik yuborish
    NetworkWriter . WriteType ( tcp _ socket , ( bayt ) Xabarlar . InfoForClient );
    NetworkWriter.WriteString(tcp_socket, info.Name);
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.TransferSuccess);
    NetworkWriter.WriteClientInfo(tcp_socket, yangi ClientInfo(nomi,
    qabul qiluvchi.GetEndPoint().Manzil.ToString(), qabul qiluvchi.GetEndPoint().Port));
    // rozetkani masofaviy rozetkaga ulang
    //receiver.Connect(info.Point);
    jo'natuvchi.Connect(ma'lumot.Point);
    // va videoni uzatishni boshlang
    BeginVideoTranslation1();
    }
    boshqa
    {
    // video aloqada rad javobini yuborish

    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.InfoForClient);


    NetworkWriter.WriteString(tcp_socket, info.Name);
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.TransferFailed);
    NetworkWriter.WriteClientInfo(tcp_socket, yangi ClientInfo(nomi,
    sender.GetEndPoint().Address.ToString(), sender.GetEndPoint().Port));
    }
    }
    bekor TransferFail()
    {
    // video qo'ng'iroqni rad etish, ekranda tegishli xabarni ko'rsatadi
    ClientInfo info = NetworkReader.ReadClientInfo(tcp_socket);
    TransferFailedHandler(info.Name);
    }
    public void TransferEnd(String user_name)
    {
    // otpravyalem polzovatelyu soobshchenie o zavershenii videosvyazi
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.InfoForClient);
    NetworkWriter.WriteString(tcp_socket, user_name);
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.TransferEnd);
    NetworkWriter.WriteClientInfo(tcp_socket, yangi ClientInfo(nomi,
    sender.GetEndPoint().Address.ToString(), sender.GetEndPoint().Port));
    // Va tugatyapmiz video translyatsiya
    EndVideoTranslation1();
    }
    public void Close()
    {
    // yuborish xabar O yakunlash ulanishlar
    NetworkWriter.WriteType(tcp_socket, (bayt)Messages.Disconnect);
    // va rozetkani serverdan uzing
    tcp_socket.Disconnect(noto'g'ri);
    qabul qiluvchi = null;
    jo'natuvchi = null;
    }
    public void BeginVideoTranslation()
    {
    ClientInfo info = NetworkReader.ReadClientInfo(tcp_socket);
    qabul qiluvchi.Ulanish (ma'lumot.Point);
    jo'natuvchi.Connect(ma'lumot.Point);
    qabul qiluvchi.BeginReceiving();
    sender.BeginSending();
    }
    Void BeginVideoTranslation1()
    {
    qabul qiluvchi.BeginReceiving();
    sender.BeginSending();
    }
    public void EndVideoTranslation()
    {
    ClientInfo info = NetworkReader.ReadClientInfo(tcp_socket);
    qabul qiluvchi.EndReceiving();
    qabul qiluvchi = null;
    sender.EndSending();
    jo'natuvchi = null;
    }
    ommaviy bekor EndVideoTranslation1()
    {
    qabul qiluvchi.EndReceiving();
    qabul qiluvchi = null;
    sender.EndSending();
    jo'natuvchi = null;
    }
    }


    1. Download 485,25 Kb.
    1   ...   7   8   9   10   11   12   13   14   15




    Download 485,25 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Udp protokoli asosida videokonferensiya dasturiy ta'minotini yaratish. Mundarija

    Download 485,25 Kb.