luasocket ile Engellemesiz G/Ç
luasocket'i coroutine zamanlayıcısıyla bütünleşik, engellemesiz kipte kullanın.
luasocket ile Engellemesiz G/Ç, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
luasocket Nedir?
luasocket, TCP/UDP soketleri, HTTP, FTP ve SMTP istemcileri sağlayan bir Lua kitaplığıdır. Varsayılan olarak engelleyicidir; engellemeyen kip asenkron G/Ç'yi etkinleştirir.
luasocket Kurulumu
LuaRocks aracılığıyla kurun: luarocks install luasocket. Betiğinizde bunu gerektirin.
local socket = require("socket")
local tcp = socket.tcp()TCP Soketi Oluşturma
Bir TCP istemci soketi oluşturun ve bir sunucuya bağlanın.
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))Engellemeyen Kip
tcp:settimeout(0) ile soketi engellemeyen kipte çalışacak şekilde ayarlayın. Okuma/yazma işlemleri hemen döner; veri hazır değilse bir zaman aşımı hatası döndürür.
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)
endKorutin Tümleştirmesi
Engellemeyen soketleri korutinlerle birleştirin: veri hazır değilse yield yapın ve seçici hazır olduğunu belirttiğinde korutini resume edin.
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
endsocket.select
socket.select(readSet, writeSet, timeout) G/Ç için hazır soket kümelerini döndürür — düzgün bir olay döngüsünün temelidir.
local readable, writable = socket.select({sock1, sock2}, nil, 0.1)
for _, s in ipairs(readable) do
local data = s:receive(1024)
-- handle data
endHTTP İstemcisi
luasocket, basit istekler için üst düzey bir HTTP modülü içerir.
local http = require("socket.http")
local body, code = http.request("http://example.com")
print(code, #body)UDP Soketleri
UDP bağlantısızdır. Veri paketi tabanlı iletişim için socket.udp() kullanın.
local udp = socket.udp()
udp:setsockname("*", 0)
udp:sendto("hello", "127.0.0.1", 9999)
local data = udp:receive()
udp:close()Zaman Aşımları
:settimeout(seconds) ile bir zaman aşımı ayarlayın. 0 zaman aşımı engellemez; pozitif bir sayı kısmi engellemeye izin verir; nil süresiz engelleme anlamına gelir.
Hata İşleme Kalıbı
luasocket işlevleri başarısızlıkta nil + hata dizesi döndürür. Her zaman ikinci dönüş değerini denetleyin.
local ok, err = tcp:connect("host", 80)
if not ok then
error("Connection failed: " .. tostring(err))
endOpenResty Alternatifi
LuaJIT'te üretim amaçlı engellemeyen G/Ç için OpenResty'nin cosocket'leri çok daha yetenekli ve yüksek performanslıdır. Bağımsız betikler ve basit araçlar için luasocket kullanın.
Engellemeyen Kip Sorusu
tcp:settimeout(0) ne yapar?
Özet: Engellemeyen G/Ç
Engellemeyen soketler için settimeout(0), G/Ç çoklama için socket.select kullanın. Korutinlerle birleştirin: zaman aşımında yield yapın, veri hazır olduğunda resume edin. Yüksek performanslı asenkron G/Ç için OpenResty veya luv kullanmayı tercih edin.
Sıkça Sorulan Sorular
“luasocket ile Engellemesiz G/Ç” dersi ücretsiz mi?
Evet — “luasocket ile Engellemesiz G/Ç” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“luasocket ile Engellemesiz G/Ç” dersinde ne öğreneceğim?
luasocket'i coroutine zamanlayıcısıyla bütünleşik, engellemesiz kipte kullanın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“luasocket ile Engellemesiz G/Ç” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Basit Bir Olay Döngüsü Oluşturma
- Coroutine'lerle Async/Await
- Promise Benzeri Örüntüler
- luasocket ile Engellemesiz G/Ç