Video: Միացումն արգելափակվո՞ւմ է:
2024 Հեղինակ: Lynn Donovan | [email protected]. Վերջին փոփոխված: 2023-12-15 23:48
միացնել է արգելափակում զանգել լռելյայն, բայց դուք կարող եք այն դարձնել ոչ արգելափակում անցնելով SOCK_NONBLOCK դրոշը միացնելու համար: միացնել () արգելափակում է մինչև TCP եռակողմ ձեռքսեղմումը ավարտելը: Ձեռքսեղմումը լսողական կողմում մշակվում է միջուկում TCP/IP կույտի միջոցով և ավարտվում է առանց օգտվողի գործընթացին ծանուցելու:
Նմանապես հարցնում են՝ ի՞նչ է արգելափակող և ոչ արգելափակող վարդակը:
Մեջ արգելափակում ռեժիմ, recv, ուղարկել, միացնել (միայն TCP) և ընդունել (միայն TCP) վարդակից API-ի զանգերը կկատարվեն արգելափակել անորոշ ժամանակով, մինչև պահանջվող գործողությունը չկատարվի: Մեջ ոչ - արգելափակում ռեժիմ, այս գործառույթները անմիջապես վերադառնում են: ընտրել կամք արգելափակել մինչև վարդակից պատրաստ է.
ինչ է արգելափակման գործառույթը: Ա արգելափակման գործառույթ հիմնականում հաշվարկում է ընդմիշտ: Ահա թե ինչ է նշանակում արգելափակում . Այլ արգելափակման գործառույթները կսպասեր IO-ի առաջացմանը: մի ոչ արգելափակում IO համակարգ նշանակում է ա ֆունկցիան սկսում է IO գործողություն, այնուհետև մնում է անգործուն, այնուհետև մշակում է IO գործողության արդյունքը, երբ դա տեղի ունենա:
Հետագայում հարց է ծագում, արդյոք վարդակն ընդունում է արգելափակում:
ընդունել () արգելափակում է զանգահարողին այնքան ժամանակ, քանի դեռ միացում չկա: Եթե հասցեում հաղորդագրությունների տեղ չկա վարդակից պահելու համար փոխանցվող հաղորդագրությունը, այնուհետև send()-ը սովորաբար արգելափակում է: Եթե հասցեում հաղորդագրություններ չկան վարդակից , recv զանգը սպասում է հաղորդագրության գալուն:
Ընտրե՞լ եք բլոկ:
Եթե ժամանակի արգումենտը ցույց է տալիս struct timeval տիպի օբյեկտ, որի անդամները 0 են, ընտրել () չի արգելափակել . Եթե ժամանակի արգումենտը NULL է, ընտրել () արգելափակում է այնքան ժամանակ, մինչև որևէ իրադարձություն չստիպի դիմակներից մեկը վերադարձնել վավեր (ոչ զրոյական) արժեքով: