1-Mauvzu: Server va mijoz tushunchalari Reja: Mijoz-server tushunchasi Mijoz-server xarakteristikasi


ep ( ip::address::from_string( "127.0.0.1" ), 8001) ;  size_t



Download 0,81 Mb.
Pdf ko'rish
bet23/29
Sana13.06.2022
Hajmi0,81 Mb.
#665734
1   ...   19   20   21   22   23   24   25   26   ...   29
Bog'liq
2 5438208446832840386

ep
( ip::address::from_string(
"127.0.0.1"
), 8001)

size_t
read_complete
(
char
* buf, 
const
error_code & err, 
size_t
bytes)

if
( err) 
return
0

bool
found = 
std
::find(buf, buf + bytes, 
'\n'
) < buf + bytes; 
// we read one-by-one until we get to enter, no buffering
return
found ? 
0

1


void
sync_echo
(std::string msg)

msg += 
"\n"

ip::tcp::socket 
sock
(service)

sock.connect(ep); 
sock.write_some(buffer(msg)); 
char
buf[
1024
]; 
int
bytes = read(sock, buffer(buf), boost::bind(read_complete,buf,_1,_2)); 
std
::
string
copy
(buf, bytes - 1)

msg = msg.substr(
0
, msg.size() - 
1
); 
std
::
cout
<< 
"server echoed our "
<< msg << 
": "
<< (copy == msg ? 
"OK"

"FAIL"
) << 
std
::
endl

sock.close(); 

int
main
(
int
argc, 
char
* argv[])

char
* messages[] = { 
"John says hi"

"so does James"

"Lucy just got home"

"Boost.Asio is Fun!"

0
}; 
boost::thread_group threads; 


for

char
** message = messages; *message; ++message) 

threads.create_thread( boost::bind(sync_echo, *message)); 
boost::this_thread::sleep( boost::posix_time::millisec(
100
)); 

threads.join_all(); 

Funktsiyaga e'tibor bering sync_echo. U serverga ulanish uchun barcha mantiqni o'z ichiga oladi, 
unga 
xabar 
yuboradi 
va 
javob 
qaytarilishini 
kutadi. 
Siz o'qish uchun bepul funktsiyadan foydalanayotganimizni payqadingiz read(), chunki biz butun 
xabarni '\ n' belgisigacha olishni xohlaymiz. Funktsiya sock.read_some()etarli bo'lmaydi, chunki 

faqat 
mavjud 
bo'lgan 
narsalarni 
o'qiydi, 
lekin 
bu 
xabarni 
to'liq 
emas. 
Read () funktsiyasining uchinchi dalili oxirgi ishlovchi. Agar xabar to'liq o'qilgan bo'lsa, u 0 ga 
qaytadi. Aks holda, keyingi bosqichda (bajarilishidan oldin read) o'qilishi mumkin bo'lgan 
buferning maksimal hajmi qaytariladi . Bizning holatda, u har doim 1 -ni qaytaradi, chunki biz 
xato 
qilgandan 
ko'ra 
ko'proq 
o'qishni 
xohlamaymiz. 
Vmain()biz bir nechta mavzu yaratamiz; mijoz yuboradigan har bir xabar uchun bitta mavzu va 
ularning bajarilishini kuting. Agar siz dasturni ishga tushirsangiz, siz quyidagi natijani ko'rasiz: 
server echoed our John says hi: OK 
server echoed our so does James: OK 
server echoed our Lucy just got home: OK 
server echoed our Boost.Asio is Fun!: OK 
E'tibor bering, biz sinxron mijoz bilan ishlayotganimiz uchun qo'ng'iroq qilishning hojati 
yo'q service.run(). 



Download 0,81 Mb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   ...   29




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©www.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