• Nazariy qism
  • 6-laboratoriya ishi mavzu: Fayllarni ko‘chiruvchi tarmoq dasturini yaratish Ishning maqsadi




    Download 0.6 Mb.
    Pdf ko'rish
    bet1/2
    Sana20.11.2023
    Hajmi0.6 Mb.
    #101595
      1   2
    Bog'liq
    6-LABORATORIYA ISHI (2)
    dinshinoslik 22, Iskandarov Q, 1655294334, Bosid 1, JEG5RUBbPbNgfcC9rMgOoPl7n9aOIdh3B1JVJm7q, 14-15-amaliy ish saidali, 14-15-amaliy ish (2), 1683197542, qos-f05, kommutatsiya-va-marshrutizatsiya, saiFsIn9nlAHbK1g3zAVwz2vphI0wcVyI9QHs5wd, 12, 1-amaliy mashg\'ulot


    6-LABORATORIYA ISHI 
    Mavzu: Fayllarni ko‘chiruvchi tarmoq dasturini yaratish 
     
    Ishning maqsadi: 
    Talabalarda Java dasturlash tili java.net.* va java.io.* paketlari klasslaridan 
    foydalanib fayllarni ko‘chirish tarmoq dasturini yaratish bo‘yicha amaliy 
    ko‘nikmalar hosil qilish. 
    Nazariy qism: 
    FTP bir xostdan ikkinchisiga fayllar nusxasini ko‘chirish uchun TCP/IP 
    tomonidan ta’minlanadigan bir standart mexanizm hisoblanadi. Bu protokol xostlar 
    o‘rtasida ikki xil aloqa o‘rnatilishini amalga oshiradi: buyruqlar (21-port) va 
    ma’lumotlarni (20-port) uzatish.
    FTP kliyent asosan 3 ta komponentdan tashkil topadi:
    - foydalanuvchi interfeysi; 
    - boshqaruv jarayoni
    - ma’lumot uzatish jarayoni.
    FTP server esa 2 ta komponentdan tashkil topadi:
    - boshqaruv jarayoni; 
    - ma’lumot uzatish jarayoni. 
    Boshqaruv bog‘lanishini yaratish ikki bosqichda amalga oshiriladi:
    1. Serverning 21 porti har doim passiv holda ochiq bo‘lib, klient so‘rovini 
    kutib turadi. 
    2. Klient vaqtinchalik portdan foydalanib, serverdagi 21 port faol holatga 
    keltiradi.
    Ma’lumot uchun bog‘lanishni yaratish boshqaruv bog‘lanishini 
    yaratishdan farq qilib, 3 bosqichda amalga oshiriladi: 
    1. Klient vaqtinchalik portdan foydalanib, passiv holatda turadi.
    2. Boshqaruv bog‘lanishi orqali serverga port nomeri jo‘natiladi. 
    3. Server port nomerini qabul qilib, 20 port nomerini faol holatga o‘zgartiradi. 



    FTP klient buyruqlari katta harflarda ASCII formatida bo‘ladi. 
    Buyruqlarni 6 guruhga ajratish mumkin: 
    - Murojaat buyruqlari; 
    - Faylni boshqarish buyruqlari; 
    - Ma’lumotni formatlash buyruqlari; 
    - Portni aniqlash buyruqlari
    - Faylni uzatuvchi buyruqlar; 
    - Turli xil buyruqlar. 
    Har bir FTP buyrug‘i eng kamida bitta javobni hosil qiladi va u uch xonali 
    sonni ya’ni xyz hosil qilib, u ham o‘z navbatida ikki qismdan tashkil topadi: sonli 
    qism (kod) va matnli qismi (qo‘shimcha izoh).
    Birinchi raqam soni 1-5 qaramlaridan biri bo‘lib, buyruq holatini aniqlaydi: 
    - 1yz – harakat boshlandi. Har bir alohida buyruqni qabul qilishidan oldin, 
    alohida javob jo‘natadi; 
    - 2yz – harakat tugatildi. Server boshqa buyruqni qabul qiladi; 
    - 3yz – buyruq qabul qilindi, lekin qo‘shimcha ma’lumot talab etiladi; 
    - 4yz – harakat sodir etilmadi, ammo vaqtinchalik xato;
    - 5yz – buyruq qabul qilinmadi hamda qayta takrorlanmasligi lozim. 
    FTP klient qismi Java kodi: 
    package ftpclient; 
    import java.net.*; 
    import java.io.*; 
    class FTPClient 

    public static void main(String args[]) throws Exception 

    Socket soc=new Socket("127.0.0.1",8888); 
    transferfileClient t=new transferfileClient(soc); 
    t.displayMenu(); 

    } } 
    class transferfileClient 

    Socket ClientSoc
    DataInputStream din; 



    DataOutputStream dout; 
    BufferedReader br
    transferfileClient(Socket soc) 

    try 

    ClientSoc=soc; 
    din=new DataInputStream(ClientSoc.getInputStream()); 
    dout=new DataOutputStream(ClientSoc.getOutputStream()); 
    br=new BufferedReader(new InputStreamReader(System.in)); 

    catch(Exception ex) 
    { } } 
    void SendFile() throws Exception 
    {
    String filename; 
    System.out.print("Fayl nomini kiriting :"); 
    filename=br.readLine(); 

    File f=new File(filename); 
    if(!f.exists()) 

    System.out.println("Fayl mavjud emas..."); 
    dout.writeUTF("Fayl topilmadi"); 
    return; 

    dout.writeUTF(filename); 
    String msgFromServer=din.readUTF(); 
    if(msgFromServer.compareTo("Fayl avvaldan mavjud")==0) 

    String Option
    System.out.println("Fayl avvaldan mavjud. Qayta yozmoqchimisiz (Y/N) ?"); 
    Option=br.readLine();
    if(Option=="Y")
    { dout.writeUTF("Y"); } 
    else 
    { dout.writeUTF("N"); 
    return; } } 
    System.out.println("Fayl jo‘natilmoqda ..."); 
    FileInputStream fin=new FileInputStream(f); 
    int ch; 
    do 
    { ch=fin.read(); 
    dout.writeUTF(String.valueOf(ch)); } 
    while(ch!=-1); 



    fin.close(); 
    System.out.println(din.readUTF()); 

    void ReceiveFile() throws Exception 

    String fileName; 
    System.out.print("Fayl nomini kiriting :"); 
    fileName=br.readLine(); 
    dout.writeUTF(fileName); 
    String msgFromServer=din.readUTF(); 

    if(msgFromServer.compareTo("Fayl topilmadi")==0) 

    System.out.println("Fayl serverda topilmadi ..."); 
    return; 

    else if(msgFromServer.compareTo("TAYYOR")==0) 

    System.out.println("Faylni qabul qilish ..."); 
    File f=new File(fileName); 
    if(f.exists()) 

    String Option; 
    System.out.println("Fayl avvaldan mavjud. Qayta yozmoqchimisiz (Y/N) ?"); 
    Option=br.readLine();
    if(Option=="N")
    { dout.flush(); 
    return; } } 
    FileOutputStream fout=new FileOutputStream(f); 
    int ch; 
    String temp
    do 

    temp=din.readUTF(); 
    ch=Integer.parseInt(temp); 
    if(ch!=-1) 
    { fout.write(ch);

    }while(ch!=-1); 
    fout.close(); 
    System.out.println(din.readUTF()); 
    } } 
    public void displayMenu() throws Exception 

    while(true) 



    {
    System.out.println("[ MENU ]"); 
    System.out.println("1. Fayl jo‘natish"); 
    System.out.println("2. Fayl qabul qilish"); 
    System.out.println("3. Chiqish"); 
    System.out.print("\nTanlovni kiriting :"); 
    int choice; 
    choice=Integer.parseInt(br.readLine()); 
    if(choice==1) 

    dout.writeUTF("SEND"); 
    SendFile(); 

    else if(choice==2) 
    { dout.writeUTF("GET"); 
    ReceiveFile(); 

    else 
    { dout.writeUTF("DISCONNECT"); 
    System.exit(1); } 
    } } } 

    Download 0.6 Mb.
      1   2




    Download 0.6 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    6-laboratoriya ishi mavzu: Fayllarni ko‘chiruvchi tarmoq dasturini yaratish Ishning maqsadi

    Download 0.6 Mb.
    Pdf ko'rish