Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.
Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin. Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

C# da internet orqali 2 ta kompyuter orasida fayl almashish

+1 ovoz
223 marta ko‘rilgan
so‘radi 27 mart, 18 SARVARBEK (355 bal)
Assalom aleykum. C# windows formda quyidagi dastur yaratish lozim:

1) Dastur ikki qismdan iborat: server va client;

Server - doimiy ravishda yoqilgan bo'lib clientdan fayl kelishi kutib turishi lozim.

Client - berilgan ip adres va port orqali tanlangan faylni jo'natadi.

Client va Server 2 ta o'zaro bog'lanmagan kompyuterlarda (ya'ni 2 ta kompyuter ham internetga ulangan) ishlashi kerak. Har bir kompyuter "local set" orqali internetga ulangan, o'zinnig ichki va tashqi ip addresslariga ega.

2) Dastur (client ham server ham) brandmaur yoki firewall kabi to'siqlardan "aylanib" o'ta olishi kerak.

Savol: Yuqoridagi dastur uchun qanday arxitektura tanlaganim yaxshiroq?

Socketlar bilan amalga oshirishga harakat qilib ko'rdim, bu holatda ayrim kompyuterlarda 2-band bo'yicha muammo kelib chiqayapdi.
izoh qoldirdi 27 mart, 18 m.kholmirzaev (164 bal)
Savolingizni yanada aniqlashtirsangiz. Siz ham client ham serverni tuzasizmi? Firewallni obxod qilgandan ko'ra dastur o'rnatilayogand kerakli ruxsatlarni olgan yaxshi.

Mana bu firewall bo'yicha javob.
https://stackoverflow.com/questions/15409790/adding-an-application-firewall-rule-to-both-private-and-public-networks-via-win7
izoh qoldirdi 27 mart, 18 SARVARBEK (355 bal)
Men ham Server, ham clientni tuzmoqchiman. "Firewallni obxod qilgandan ko'ra dastur o'rnatilayoganda kerakli ruxsatlarni olgan yaxshi" - debsiz. Agar o'rnatilayotganda ruxsat olinadigan qilib dasturni tuzsam, u holatda oddiy TcpListener bilan TcpClientdan foydalanib tuzib qo'ysam ham bo'laveradiku, to'g'rimi? Yoki bundan ham optimalroq yo'li bormi?

Men ikkilanyotgan joyim, internet orqali fayllarni almashishni oldin hech qilib ko'rmaganman. Bu ishni qilish uchun socket to'g'ri yechimmi yoki yo'qmi shuni bilmayapman. Agar socket xato yechim bo'lsa, u holda qaysi usulda qilganim yaxshi?

Qo'shimcha ma'lumot:
almashinadigan fayllar hajmi 1 KB dan 100 MB gacha bo'lishi mumkin, serverga ulanadigan clientlar soni 1<x<10 oralig'ida bo'ladi.
izoh qoldirdi 28 mart, 18 m.kholmirzaev (164 bal)
Umuman olganda farqi yo'q. Ya'ni siz aytayotgan masala uchun. TcpListener ham shu socket bn ishlaydi. TCPListener socketlar bn tcp protokolda ishlash osonroq. Mayda soketlarni tuzish ularni boshqarish va hokazolarni "bo'yniga olgan".
Mana bu  yerda Socket bn TcpListenerni farqi haqida qisqa javob berilgan
https://stackoverflow.com/questions/12361924/difference-between-tcp-listener-and-socket

1 ta javob

+1 ovoz
javob berdi 28 mart, 18 m.kholmirzaev (164 bal)
tanlangan 29 mart, 18 SARVARBEK
 
Eng yaxshi javob

Agar oddiy shu fayllarni almashinuvini qilaman desangiz ya'ni oddiy o'zingiz uchun tajribaga qiladigan bo'lsangiz bemalol bo'laveradi. Xoxlasangiz Socketda xoxlasangiz TCPListenerda qiling. Lekin agar enterpriseda ishlataman desangiz sinovdan o'tgan protokollardan foydalanganingiz yaxshi. Eng osoni eng keng tarqalgani FTP. Hamma protokollarni ba'zi joylarda ustunligi ba'zi joylarda ojizligi bor. Hal qilmoqchi bo'lgan masalangizga qarab biror protokoldan foydalanganingiz muvofiqroq bo'ladi. .NET uchun qariyb barcha protokollarni realizatsiyasi bor. Githubdan yoki Nugetdan topishingiz mumkin.  

Bu yerda network protokollarni vazifalari bn jadvalda keltirilgan 

https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D1%8B%D1%85_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%BE%D0%B2_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC%D1%83_%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8E

Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.

Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin.

Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Telegram kanal YordamUzRss

...