Lua Academy · पाठ

luasocket के साथ नॉन-ब्लॉकिंग I/O

कोरूटीन शेड्यूलर के साथ एकीकृत नॉन-ब्लॉकिंग मोड में luasocket का उपयोग करें।

पाठ 4, कुल 4 में से13 चरण

luasocket के साथ नॉन-ब्लॉकिंग I/O, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

लुआसॉकेट क्या है

लुआसॉकेट एक Lua लाइब्रेरी है, जो TCP/UDP सॉकेट, एचटीटीपी, FTP और SMTP ग्राहक उपलब्ध कराती है। डिफ़ॉल्ट रूप से यह अवरोधक होती है; गैर-अवरोधक मोड अतुल्यकालिक इनपुट/आउटपुट सक्षम करता है।

लुआसॉकेट स्थापित करना

LuaRocks के माध्यम से स्थापित करें: luarocks install luasocket। अपनी स्क्रिप्ट में इसे आवश्यक करें।

local socket = require("socket")
local tcp = socket.tcp()

TCP सॉकेट बनाना

TCP ग्राहक सॉकेट बनाएँ और किसी सर्वर से कनेक्ट करें।

local tcp = socket.tcp()
tcp:connect("example.com", 80)
tcp:send("GET / HTTP/1.0\r\nHost: example.com\r\n\r\n")
local response = tcp:receive("*a")
tcp:close()
print(response:sub(1, 200))

गैर-अवरोधक मोड

tcp:settimeout(0) के साथ सॉकेट को गैर-अवरोधक बनाएँ। यदि कोई डेटा तैयार न हो, तो पढ़ने/लिखने की संक्रियाएँ तुरंत समय-सीमा त्रुटि के साथ लौटती हैं।

tcp:settimeout(0)  -- non-blocking
local data, err = tcp:receive(1024)
if err == "timeout" then
  -- no data yet, try again later
elseif data then
  print("Got:", data)
end

कोरूटीन एकीकरण

गैर-अवरोधक सॉकेट को कोरूटीन के साथ मिलाएँ: डेटा तैयार न होने पर yield करें और चयनक के तैयार होने का संकेत देने पर कोरूटीन को resume करें।

local function readAsync(sock)
  while true do
    local data, err = sock:receive(1024)
    if data then return data end
    if err ~= "timeout" then error(err) end
    coroutine.yield()  -- let other tasks run
  end
end

socket.select

socket.select(readSet, writeSet, timeout) इनपुट/आउटपुट के लिए तैयार सॉकेटों के समुच्चय लौटाता है — यह उचित इवेंट लूप का आधार है।

local readable, writable = socket.select({sock1, sock2}, nil, 0.1)
for _, s in ipairs(readable) do
  local data = s:receive(1024)
  -- handle data
end

एचटीटीपी ग्राहक

लुआसॉकेट में सरल अनुरोधों के लिए उच्च-स्तरीय एचटीटीपी मॉड्यूल शामिल है।

local http = require("socket.http")
local body, code = http.request("http://example.com")
print(code, #body)

UDP सॉकेट

UDP कनेक्शन-रहित होता है। डेटाग्राम-आधारित संचार के लिए socket.udp() का उपयोग करें।

local udp = socket.udp()
udp:setsockname("*", 0)
udp:sendto("hello", "127.0.0.1", 9999)
local data = udp:receive()
udp:close()

समय-सीमाएँ

:settimeout(seconds) के साथ समय-सीमा निर्धारित करें। 0 की समय-सीमा गैर-अवरोधक होती है; धनात्मक संख्या आंशिक अवरोध की अनुमति देती है; शून्य मान का अर्थ अनिश्चितकाल तक रुकना है।

त्रुटि सँभालने का पैटर्न

विफल होने पर लुआसॉकेट फ़ंक्शन शून्य मान और त्रुटि-पाठ लौटाते हैं। हमेशा दूसरा लौटाया गया मान जाँचें।

local ok, err = tcp:connect("host", 80)
if not ok then
  error("Connection failed: " .. tostring(err))
end

OpenResty विकल्प

LuaJIT में उत्पादन-स्तरीय गैर-अवरोधक इनपुट/आउटपुट के लिए OpenResty के cosockets कहीं अधिक सक्षम और बेहतर प्रदर्शन वाले हैं। स्वतंत्र स्क्रिप्ट और सरल उपकरणों के लिए लुआसॉकेट का उपयोग करें।

गैर-अवरोधक संबंधी प्रश्न

tcp:settimeout(0) क्या करता है?

पुनरावृत्ति: गैर-अवरोधक इनपुट/आउटपुट

गैर-अवरोधक सॉकेट के लिए settimeout(0) और इनपुट/आउटपुट बहुसंकेतन के लिए socket.select का उपयोग करें। इसे कोरूटीन के साथ मिलाएँ: समय-सीमा पर yield करें और डेटा तैयार होने पर resume करें। उच्च-प्रदर्शन वाले अतुल्यकालिक इनपुट/आउटपुट के लिए OpenResty या लव को प्राथमिकता दें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Lua सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
40
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “luasocket के साथ नॉन-ब्लॉकिंग I/O” पाठ निःशुल्क है?

हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “luasocket के साथ नॉन-ब्लॉकिंग I/O” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“luasocket के साथ नॉन-ब्लॉकिंग I/O” में मैं क्या सीखूँगा?

कोरूटीन शेड्यूलर के साथ एकीकृत नॉन-ब्लॉकिंग मोड में luasocket का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“luasocket के साथ नॉन-ब्लॉकिंग I/O” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. सरल इवेंट लूप बनाना
  2. कोरूटीन के साथ Async/Await
  3. Promise-जैसे पैटर्न
  4. luasocket के साथ नॉन-ब्लॉकिंग I/O
← Lua Academy पर वापस जाएँ