Kliyent tomondan holatni boshqarish. C # da tarmoq aloqasi.



Download 20,64 Kb.
bet2/3
Sana05.01.2022
Hajmi20,64 Kb.
#317433
1   2   3
Bog'liq
Kliyent tomondan holatni boshqarish

Mijozlar qismi

Mijoz tomoni faqat TcpClient sinfidan foydalanadi.

Biz faqat ikkilik ma'lumotlarni TCP protokoli orqali uzata olamiz. Shuning uchun, TcpClient sinfining ob'ektini ishga tushirgandan so'ng, ikkilik ma'lumotlarni o'qish va yozish uchun bir qator baytlarni tayyorlashingiz, shuningdek, uzatish uchun oqimni ochishingiz kerak.

Quyidagi misolda ma'lumotlarni uzatish uchun tayyorgarlik bosqichi ko'rsatilgan (serverga yuborilgan mag'lubiyat xabari qatoriga aylantiriladi):



TcpClient client = new TcpClient(address, port);

Byte[ ] data = Encoding.UTF8.GetBytes(outMessage);

NetworkStream stream = client.GetStream();
Xuddi shu narsa, lekin ma'lumot olish uchun:

TcpClient client = new TcpClient(address, port);

Byte[] data = new Byte[256];

NetworkStream stream = client.GetStream();
Ma'lumotlar serverga Write usuli yordamida yuboriladi.

stream.Write(data, 0, data.Length);
Birinchi parametr sifatida u yuborilgan ikkilik ma'lumotni qabul qiladi, ikkinchi parametr bayt massivining boshidan boshlab ofsetni o'rnatadi (undan bayt uzatishni boshlash kerak, odatda nolga teng (bayt massivi to'liq yuboriladi)), uchinchi parametr - ikkilik ma'lumotlarning hajmi (bu misolda baytlar massivi to'liq uzatiladi).

Ma'lumotni olish ancha murakkab. Biz ularning haqiqiy hajmini bilmaymiz va shuning uchun ularni tugaguniga qadar tsiklda o'qishimiz kerak.

Quyida, misol sifatida satr yordamida serverdan ma'lumotlarni qabul qilish misoli keltirilgan.

string responseData = String.Empty;

StringBuilder completeMessage = new StringBuilder();

int numberOfBytesRead = 0;

do

{

numberOfBytesRead = stream.Read(readingData, 0,readingData.Length);

completeMessage.AppendFormat("{0}", Encoding.UTF8.GetString(readingData, 0, numberOfBytesRead));

}

while (stream.DataAvailable);

responseData = completeMessage.ToString();
Oqimda ma'lumotlar mavjud ekan (DataAvailable xususiyati true ga teng), serverdan olingan satr StringBuilder klassi yordamida asta-sekin joriy takrorlash paytida buferga o'qilgan ma'lumotlar bilan shakllanadi. Barcha ma'lumotlar o'qilgandan so'ng, oqimdan tayyor satr xabari qaytariladi.

Uzatish yoki qabul qilish tugagandan so'ng, oqim va tarmoq ulanishi yopilishi kerak.



stream.Close();

client.Close();
Quyida umuman server bilan ma'lumotlar almashish jarayonini aks ettiruvchi misol keltirilgan.
private string Exchange(string address, int port, string outMessage)

{

// Aloqani o`rnatish

TcpClient client = new TcpClient(address, port);

Byte[] data = Encoding.UTF8.GetBytes(outMessage);

NetworkStream stream = client.GetStream();

try

{

// Habar jo`natish

stream.Write(data, 0, data.Length);

// Javobni qabul qilish

Byte[] readingData = new Byte[256];

String responseData = String.Empty;

StringBuilder completeMessage = new StringBuilder();

int numberOfBytesRead = 0;

do

{

numberOfBytesRead = stream.Read(readingData, 0, readingData.Length);

completeMessage.AppendFormat("{0}", Encoding.UTF8.GetString(readingData, 0, numberOfBytesRead));

}

while (stream.DataAvailable);

responseData = completeMessage.ToString();

return responseData;

}

finally

{

stream.Close();

client.Close();

}

}


Download 20,64 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish