Mavzu: oydning afzalliklari va kamchiliklari Reja: oydning afzalliklari oydning kamchiliklari


Reja: 1. I / U -ni blokirovka qilish



Download 1,56 Mb.
bet18/19
Sana23.09.2022
Hajmi1,56 Mb.
#849823
1   ...   11   12   13   14   15   16   17   18   19
Bog'liq
Maruza

Reja:
1. I / U -ni blokirovka qilish:
2. TCP va UDP
I / U turi: Keyin biz bir nechta umumiy kirish -chiqish modellarini va ularning farqlarini tanishtiramiz.
I / U -ni blokirovka qilish: I / U-ni blokirovka qilish (agar ma'lumot bo'lmasa, blokirovka) Bloklanmagan I / U Multipleksli I / U: Multipleksli I / U (tanlash va so'rov) Signal I / U: Signal bilan boshqariladigan I / U (SIGIO) Asinxron I / U chiqishi: asinxron kirish -chiqish (POSIX aio_functions funktsiyasi) Kirish / chiqish multipleksiyasi: kirish -chiqish multipleksiyasi texnologiyasi bir nechta kirish -chiqish bloklarini bir xil tanlangan blokga ko'paytiradi, shunda tizim bitta kirish -chiqish so'rovida bir nechta kirish -chiqish operatsiyalarini bajarishi mumkin. An'anaviy ko'p ishlovli / ko'p protsessorli model bilan solishtirganda, kirish -chiqish multipleksatsiyasining eng katta afzalligi shundaki, tizimning qo'shimcha xarajatlari past bo'ladi: tizimga yangi qo'shimcha jarayonlar yoki ish zarrachalari yaratishga hojat yo'q, shuningdek, bu jarayonlar va oqimlarning ishlashini ta'minlash shart emas. Bu tizimni saqlash yukini kamaytiradi va tizim resurslarini tejaydi.
API: tanlov, so'rov, epoll
IO multiplexing quyidagi hollarda talab qilinadi:
Agar mijoz bir nechta tavsiflovchini
ishlasa, bir vaqtning o'zida bir nechta rozetkalarni qayta ishlashda,
agar TCP serveri tinglash rozetkalarini ham, ulangan rozetkalarni
ham boshqarishi kerak bo'lsa, agar server TCP va UDP ni
boshqarishi kerak bo'lsa, server boshqarishi kerak. bir nechta xizmatlar yoki bir nechta protokollar
Xulosa: agar oqim ko'p yo'lli kirish -chiqish blokirovkasiga ega bo'lsa, siz multiplekslashni ishlatishingiz mumkin.
Tanlov: Bu funksiya har qanday kirish -chiqish hodisalarining (masalan, o'qishga tayyor, yozish) sodir bo'lishini kutadi va tarmoq hodisasi yuz berishi bilan tanlangan mavzu bajariladi. Agar voqea sodir bo'lmasa, blokirovka qiling. Prototip quyidagicha ko'rinadi:
int select (int nfds, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, struct timeval * timeout);
Nfds: yirik soqchilar fayl identifikatori
readfs: o'qish fayl
identifikatori Yozma fayl identifikatorlari
chiqish fayl aniqlovchi ham xato, FDS tashqari
Takrorlash: belgilangan vaqt doirasida
struct tanaffusda
{
uzoq misec;
uzoq soniya;
}
Xususiyatlar: Agar qo'riqchining fayl tavsifi holatini o'zgartirmasa (o'qish va yozish o'zgarmasa), u qulflanadi. Aks holda, u uyg'onadi va xabar beradi. Har safar xabar yuborilganda, fayl tavsiflovchisining sozlamalari tiklanadi, qaytganida sababini aniqlash kerak. Qaytgan qiymat: -1. Xato. Xato holati

1. To'plam yarating:
fd_set to'plami
2.
FD_SET to'plamiga deskriptor qo'shing FD_CLR
fayl tavsiflovchisidan
deskriptorni olib tashlang Fayl tavsiflovchisida
o'zgarishlar yuz berganligini aniqlash uchun:
FD_ISSET
Fayl tavsifi holati o'zgardi> 0 Muvaffaqiyatsiz == 0 Deskriptor
to'plamini tozalash uchun:
FD_ZERO
Bir nechta kirish / chiqishning server tomonidan bajarilishi:
#include
#include
#include
#include
// UDP - сервер
// 4 закрываем сокет
int main()
{
// 1 создаем сокет
int sock=socket(AF_INET,SOCK_DGRAM,0);
if(sock<0)
{
perror("socket fail");
return -1;
}
// 2 bind socket
struct sockaddr_in myaddr;
myaddr.sin_family =AF_INET;
myaddr.sin_port =htons(7979);
myaddr.sin_addr.s_addr =INADDR_ANY;
if(bind(sock,(struct sockaddr*)&myaddr,sizeof(myaddr))<0)
{
perror("socket fail");
return -1;
}
// 3 отправка и получение сообщений
int ilen=0;
char buf[100]="";
struct sockaddr_in caddr;
socklen_t addrlen=sizeof(caddr);
while(1)
{
ilen=recvfrom(sock,buf,99,0,(struct sockaddr*)&caddr,&addrlen);
if(ilen<=0)
break;
buf[ilen]='\0';
// вывод
printf("%s\n",buf);
// возвращаем сообщение
sendto(sock,"ok",2,0,(struct sockaddr*)&caddr,sizeof(caddr));
}
// закрыть
close(sock);
return 0;
}
Ko'pincha mijoz kodida, erishish uchun tanlash funktsiyasidan foydalaning:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main()
{
// Создать сокет
int sock=socket(AF_INET,SOCK_DGRAM,0);
if(sock<0)
{perror("fail\n");return -1; }
// привязка
// Отправить
// Создать набор файловых дескрипторов
fd_set rset;
FD_ZERO(&rset);
int maxfd = STDIN_FILENO> sock? STDIN_FILENO: sock; // Дескриптор клавиатуры 0
// Структура адреса: сервер
struct sockaddr_in saddr;
bzero (& saddr, sizeof (saddr)); // очистить
saddr.sin_family =AF_INET;
saddr.sin_port =htons(7979);
saddr.sin_addr.s_addr =inet_addr("192.168.8.138");
char buf[100]="";
int ilen=0;
while(1)
{
// Установить дескриптор файла set: чтение с клавиатуры, чтение из сокета
FD_SET(STDIN_FILENO,&rset);
FD_SET(sock,&rset);
// Многоканальное мультиплексирование ввода / вывода
if(-1==select(maxfd+1,&rset,NULL,NULL,NULL)&&errno!=EINVAL)
{
perror("select fail");
break;
}
if (FD_ISSET (STDIN_FILENO, & rset)> 0) // Чтение с клавиатуры
{
read(STDIN_FILENO,buf,99);
// Отправить
sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&saddr,sizeof(saddr));
}
if (FD_ISSET (sock, & rset)> 0) // чтение из сокета
{
// читаем
ilen=recv(sock,buf,99,0);
if(ilen<=0) break;
buf[ilen]='\0';
printf («Получено:% s \ n», buf);
} }
close(sock);
return 0;}

10-Mavzu: UDP mijozi va serverini ishlab chiqish.



Download 1,56 Mb.

Do'stlaringiz bilan baham:
1   ...   11   12   13   14   15   16   17   18   19




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