<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Luasocket сервер - останавливает выполнение кода]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Luasocket сервер - останавливает выполнение кода форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 02 May 2026 14:28:35 +0300</pubDate>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64805/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_jJxjdUCX" href="/user/14896/" bx-tooltip-user-id="14896">Boris</a> написал:<br /><br /> &nbsp;client &nbsp; = &nbsp; server:accept()<br /> &nbsp;client:settimeout( &nbsp;2 &nbsp;) [/CODE] <br /><br />таймаут надо ставить на сервер<br />[QUOTE]<br />server:settimeout(2)<br /><br />=============<br />даже в гугле есть ответ<br /><noindex><a href="https://stackoverflow.com/questions/42445423/luasocket-serveraccept-timeout-tcp" target="_blank" rel="nofollow">https://stackoverflow.com/questions/42445423/luasocket-serveraccept-timeout-tcp</a></noindex> <br />
			<i>05.08.2022 14:07:51, Павел Bosco.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64805/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64805/topic7514/</guid>
			<pubDate>Fri, 05 Aug 2022 14:07:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64795/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_J134hB9v" href="/user/15677/" bx-tooltip-user-id="15677">abdula amin</a> написал:<br />Просто я нигде не могу найти луа сокет под 5.4.1 пожалуйста если не сложно скиньте ссылку где скачать<br />=============<br /><noindex><a href="https://github.com/alain-riedinger/luasocket/releases" target="_blank" rel="nofollow">https://github.com/alain-riedinger/luasocket/releases</a></noindex><br /><noindex><a href="https://disk.yandex.ru/d/wJ8I71eZ0vFT3w" target="_blank" rel="nofollow">https://disk.yandex.ru/d/wJ8I71eZ0vFT3w</a></noindex><br /><br />скомпиллены по разному и под разный набор софта на ПК <br />
			<i>04.08.2022 19:51:07, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64795/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64795/topic7514/</guid>
			<pubDate>Thu, 04 Aug 2022 19:51:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64789/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Просто я нигде не могу найти луа сокет под 5.4.1 пожалуйста если не сложно скиньте ссылку где скачать <br />
			<i>04.08.2022 15:23:04, abdula amin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64789/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64789/topic7514/</guid>
			<pubDate>Thu, 04 Aug 2022 15:23:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64788/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			может есть кто живой на этой теме ? <br />
			<i>04.08.2022 15:21:46, abdula amin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64788/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64788/topic7514/</guid>
			<pubDate>Thu, 04 Aug 2022 15:21:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64541/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_zaqZl0d8" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />поставьте sleep хотя бы на 100 ms<br />=============<br />было - ставил<br />разницы не заметил тк в вызываемых из main функциях организована проверка на уже запущеный процесс<br />те повторно тот же процесс не запускается - до тех пор пока не завершится первый<br /><br /><br />на ситуацию с зависанием после server:accept() - не влияет <br />
			<i>25.07.2022 18:34:54, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64541/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64541/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 18:34:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64540/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_DJt2ei36" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Какая у вас версия КВИК<br />=============<br />9.3.3.3 lua 5.4.1<br />до этого пробовал и lua 5.3.5 - с другой dll luasocket<br />думал что возможно dll глючная. <br />
			<i>25.07.2022 18:29:06, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64540/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64540/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 18:29:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64539/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			поставьте sleep хотя бы на 100 ms <br />
			<i>25.07.2022 18:13:01, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64539/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64539/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 18:13:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64538/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			У вас в main нет задержки поэтому сервер работает в цикле Main <br />Посмотрите загрузку процессора должно быть много. <br />
			<i>25.07.2022 18:11:54, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64538/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64538/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 18:11:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64537/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Какая у вас версия КВИК <br />
			<i>25.07.2022 18:10:25, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64537/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64537/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 18:10:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64532/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_gQWDjD7Y" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />У вас сервер запускает когда main завершает работу.Т е если main работает то сервер не запускаетсяВы должны его вставить в цикл main<br />=============<br />в main есть вызов ServerRun().<br /><br />Функция вызывается - доходит до строки client &nbsp;= &nbsp;server:accept() и вешает весь остальной код.<br />Сервер при этом работает - по любому запросу моментально отвечает клиенту.<br /><br />Но проблема что до тех пока клиент не придёт и не запросит данные никакие другие функции lua - включая сборщика статы table.load (var, &nbsp;1000 ) не исполняются.<br /><br />Если вы о том что необходимо сделать так<br /><br /><br />
====code====
<pre>function&nbsp;&nbsp; main ()
&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;&nbsp;is_run&nbsp;&nbsp;do 
 
&nbsp;&nbsp;&nbsp;&nbsp;table.load (var,&nbsp;&nbsp;1000 )
 end 

while&nbsp;&nbsp;is_run&nbsp;&nbsp;do 
&nbsp;&nbsp;client&nbsp;&nbsp;=&nbsp;&nbsp;server:accept()
&nbsp;&nbsp;client:settimeout( 2 )
&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;line, err&nbsp;&nbsp;=&nbsp;&nbsp;client:receive()
&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;result&nbsp;&nbsp;=&nbsp;&nbsp;evalString(line)
&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; not&nbsp;&nbsp;err&nbsp;&nbsp;then&nbsp;&nbsp;client:send(result .. "&#92;n")&nbsp;&nbsp;end 
&nbsp;&nbsp; client:close()
 end 

 end 
</pre>
=============
Или даже вот так:<br />
====code====
<pre>function&nbsp;&nbsp; main ()
&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;&nbsp;is_run&nbsp;&nbsp;do 
 
&nbsp;&nbsp;&nbsp;&nbsp;table.load (var,&nbsp;&nbsp;1000 )

&nbsp;&nbsp;client&nbsp;&nbsp;=&nbsp;&nbsp;server:accept()
&nbsp;&nbsp;client:settimeout( 2 )
&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;line, err&nbsp;&nbsp;=&nbsp;&nbsp;client:receive()
&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;result&nbsp;&nbsp;=&nbsp;&nbsp;evalString(line)
&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; not&nbsp;&nbsp;err&nbsp;&nbsp;then&nbsp;&nbsp;client:send(result .. "&#92;n")&nbsp;&nbsp;end 
&nbsp;&nbsp; client:close()

 end 
 end </pre>
=============
<br />То в результате нет абсолютно никакой разницы - как только выполняется строка server:accept() - работает только сервер и ничто другое. <br />
			<i>25.07.2022 16:49:52, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64532/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64532/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 16:49:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64528/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_i7zBsLAT" href="/user/14896/" bx-tooltip-user-id="14896">Boris</a> написал:<br />Есть исправно работающий обработчик стаканов.<br />Хочется прикрутить вывод информации из Quik в сторонние приложения по средством организации передачи данных через socket сервер.<br />Постоянно запускающаяся зацикленная &nbsp;функция вызываемая из main производит обработку и складирование данных в массив.<br />Socket сервер - должен периодически выдавать эту информацию по запросу подключившегося клиента.<br /><br />Для запуска в Quik сервера используется библиотека luasocket (под lua 5.4.1).<br />Запуск ожидания коннекта ServerRun() - так же запускается из main.<br />При этом после выполнения server:accept() - выполнение какого либо кода прекращается.<br />Прекращается до тех пор пока на сервер не поступит запрос - он не выдаст ответ и только тогда функция table.load(var, 1000) будет запущена повторно.<br />И тоже застопорится до поступления следующего запроса от socket клиента.<br />client:settimeout(2) - должен вроде как прерывать ожидание коннекта и закрывать коннект - что поспособствовало бы продолжению выполнения иного кода, но этого не происходит.<br />Пробовал многое - но ничего не помогло. Где бы в коде не запускалась server:accept() - она останавливает выполнение любых других функций.<br />Как организовать запуск table.load(var, 1000) и ServerRun() - в раздельных потоках - так чтобы выполнение одной функции не останавливалось на период работы другой ? <br />Код для примера (сильно сокращён)<br /><br /> 
====code====
<pre>&nbsp;&nbsp;socket&nbsp;&nbsp;=&nbsp;&nbsp; require ( "socket" )

IPAddr&nbsp;&nbsp;=&nbsp;&nbsp; "127.0.0.1"&nbsp;&nbsp; --IP Адрес 
IPPort&nbsp;&nbsp;=&nbsp;&nbsp; 3585&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --IP Port&nbsp;&nbsp;&nbsp;&nbsp; 
client&nbsp;&nbsp;=&nbsp;&nbsp; nil 

 function&nbsp;&nbsp; main ()
&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;&nbsp;is_run&nbsp;&nbsp;do 
 
&nbsp;&nbsp;&nbsp;&nbsp;table.load (var,&nbsp;&nbsp;1000 )
 end 
ServerRun()
 end 


 function&nbsp;&nbsp; ServerRun ()
 while&nbsp;&nbsp;is_run&nbsp;&nbsp;do 
&nbsp;&nbsp;client&nbsp;&nbsp;=&nbsp;&nbsp;server:accept()
&nbsp;&nbsp;client:settimeout( 2 )
&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;line, err&nbsp;&nbsp;=&nbsp;&nbsp;client:receive()
&nbsp;&nbsp;&nbsp;&nbsp; local&nbsp;&nbsp;result&nbsp;&nbsp;=&nbsp;&nbsp;evalString(line)
&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; not&nbsp;&nbsp;err&nbsp;&nbsp;then&nbsp;&nbsp;client:send(result .. "&#92;n")&nbsp;&nbsp;end 
&nbsp;&nbsp; client:close()
 end 
 end 

 function&nbsp;&nbsp; OnInit (quik_path)
server&nbsp;&nbsp;=&nbsp;&nbsp;assert( socket.bind ( "127.0.0.1" , IPPort))
 end 
&nbsp;&nbsp;</pre>
=============
 <br />=============<br />У вас сервер запускает когда main завершает работу.<br />Т е если main работает то сервер не запускается<br />Вы должны его вставить в цикл main <br />
			<i>25.07.2022 16:18:17, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64528/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64528/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 16:18:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64526/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			&nbsp; &nbsp; <br />Чистый Lua синхронный, максимум что есть - это корутины. Можно попробовать использовать внешние библиотеки, обеспечивающие асинхронность.<br /><br />Можете попробовать корутины, вот классчический пример для HTTP, который сразу находится по запросу &quot;<noindex><a href="https://stackoverflow.com/questions/5795419/lua-socket-asynchronous-calls" target="_blank" rel="nofollow">Lua socket asynchronous calls</a></noindex>&quot;:<br />Хотя, наверно, уже пробовали.<br />
====code====
<pre>function download (host, file, port)
&nbsp;&nbsp;&nbsp;&nbsp;port = port or 80
&nbsp;&nbsp;&nbsp;&nbsp;print (host, file, port)
&nbsp;&nbsp;&nbsp;&nbsp;local connectStatus, myConnection = pcall (socket.connect,host,port)
&nbsp;&nbsp;&nbsp;&nbsp;if (connectStatus) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myConnection:settimeout(0.01) -- do not block you can play with this value
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local count = 0 -- counts number of bytes read
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- May be easier to do this LuaSocket's HTTP functions
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myConnection:send("GET " .. file .. " HTTP/1.0&#92;r&#92;n&#92;r&#92;n")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local lastStatus = nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while true do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local buffer, status, overflow = receive(myConnection, lastStatus)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- If buffer is not null the call was a success (changed in LuaSocket 2.0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (buffer ~= nil) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; io.write("+")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; io.flush()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count = count + string.len(buffer)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print ("&#92;n&#92;"" .. status .. "&#92;" with " .. string.len(overflow) .. " bytes of " .. file)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;io.flush()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = count + string.len(overflow)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if status == "closed" then break end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastStatus=status
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myConnection:close()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(file, count)
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Connection failed with error : " .. myConnection)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;io.flush()
&nbsp;&nbsp;&nbsp;&nbsp;end
end

threads = {} -- list of all live threads

function get (host, file, port)
&nbsp;&nbsp;&nbsp;&nbsp;-- create coroutine
&nbsp;&nbsp;&nbsp;&nbsp;local co = coroutine.create(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function ()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;download(host, file, port)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end)
&nbsp;&nbsp;&nbsp;&nbsp;-- insert it in the
&nbsp;&nbsp;&nbsp;&nbsp;table.insert(threads, co)
end

function receive (myConnection, status)
&nbsp;&nbsp;&nbsp;&nbsp;if status == "timeout" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print (myConnection, "Yielding to dispatcher")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;io.flush()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coroutine.yield(myConnection)
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return myConnection:receive(1024)
end

function dispatcher ()
&nbsp;&nbsp;&nbsp;&nbsp;while true do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local n = table.getn(threads)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if n == 0 then break end -- no more threads to run
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local connections = {}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=1,n do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print (threads&#91;i&#93;, "Resuming")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;io.flush()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local status, res = coroutine.resume(threads&#91;i&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not res then -- thread finished its task?
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.remove(threads, i)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else -- timeout
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(connections, res)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.getn(connections) == n then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket.select(connections)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
end

host = "www.w3.org"
get(host, "/TR/html401/html40.txt")
get(host,"/TR/2002/REC-xhtml1-20020801/xhtml1.pdf")
get(host,"/TR/REC-html32.html")
get(host,"/TR/2000/REC-DOM-Level-2-Core-20001113/DOM2-Core.txt")
dispatcher()
</pre>
============= <br />
			<i>25.07.2022 13:21:36, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64526/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64526/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 13:21:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64525/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			код не исполняется далее строки &nbsp;client = server:accept()<br />Даже строка client:settimeout(2) - не выполняется. <br />
			<i>25.07.2022 13:12:59, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64525/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64525/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 13:12:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64524/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			====code====
<pre> client = server:accept()
&nbsp;&nbsp;client:settimeout(2)</pre>
=============
<br />(2) - по логике server:accept() должна ожидать коннекта клиента 2 сек и при не поступлении запроса от клиента завершиться сама собой.<br />Но она этого не делает - продолжает ждать останавливая весь код. <br />
			<i>25.07.2022 13:11:48, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64524/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64524/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 13:11:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64523/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_IAneiC3W" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/14896/" target="_blank" rel="nofollow">Boris</a></noindex> написал:<br />uasocket<br />=============<br /> см док:<br />Используйте метод &nbsp;<noindex><a href="https://w3.impa.br/~diego/software/luasocket/tcp.html#settimeout" target="_blank" rel="nofollow">settimeout</a></noindex> &nbsp;или accept может блокироваться<br /><br />Так в коде мною приведенном посмотрите - settimeout там есть, те мною используется.<br />И применял я его в разных режимах b t <br />Не помогает это !<br /><br />Или вы о каком то то другом использовании settimeout Тогда поясните пожалуйста...<br /><br /><br />=============<br /> <br />
			<i>25.07.2022 12:40:22, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64523/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64523/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 12:40:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64517/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_6EcxNwRu" href="/user/14896/" bx-tooltip-user-id="14896">Boris</a> написал:<br />uasocket<br />=============<br />см док:<br />Используйте метод <noindex><a href="https://w3.impa.br/~diego/software/luasocket/tcp.html#settimeout" target="_blank" rel="nofollow">settimeout</a></noindex> или accept может блокироваться до тех пор, пока не появится другой клиент. <br />
			<i>25.07.2022 12:00:50, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64517/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64517/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 12:00:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64516/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Как правильно сделать ожидание коннекта функцией server:accept() - чтоб она прерывалась при отсутствии подключённого клиента ?<br />Или как в принципе в quik lua запускать асинхронно функции ?Асинхронный запуск функций вообще возможен ? <br />
			<i>25.07.2022 11:42:37, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64516/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64516/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 11:42:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Luasocket сервер - останавливает выполнение кода</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message64515/topic7514/">Luasocket сервер - останавливает выполнение кода</a></b> <i>Возможен ли асинхронный запуск нескольких функций в Quik lua ?</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Есть исправно работающий обработчик стаканов.<br />Хочется прикрутить вывод информации из Quik в сторонние приложения по средством организации передачи данных через socket сервер.<br />Постоянно запускающаяся зацикленная &nbsp;функция вызываемая из main производит обработку и складирование данных в массив.<br />Socket сервер - должен периодически выдавать эту информацию по запросу подключившегося клиента.<br /><br />Для запуска в Quik сервера используется библиотека luasocket (под lua 5.4.1).<br />Запуск ожидания коннекта ServerRun() - так же запускается из main.<br />При этом после выполнения server:accept() - выполнение какого либо кода прекращается.<br />Прекращается до тех пор пока на сервер не поступит запрос - он не выдаст ответ и только тогда функция table.load(var, 1000) будет запущена повторно.<br />И тоже застопорится до поступления следующего запроса от socket клиента.<br />client:settimeout(2) - должен вроде как прерывать ожидание коннекта и закрывать коннект - что поспособствовало бы продолжению выполнения иного кода, но этого не происходит.<br />Пробовал многое - но ничего не помогло. Где бы в коде не запускалась server:accept() - она останавливает выполнение любых других функций.<br />Как организовать запуск table.load(var, 1000) и ServerRun() - в раздельных потоках - так чтобы выполнение одной функции не останавливалось на период работы другой ? <br />Код для примера (сильно сокращён)<br /><br />
====code====
<pre>socket = require("socket")

IPAddr = "127.0.0.1" --IP Адрес
IPPort = 3585&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --IP Port&nbsp;&nbsp;&nbsp; 
client = nil

function main()
&nbsp;&nbsp; while is_run do
 
&nbsp;&nbsp; table.load(var, 1000)
end
ServerRun()
end


function ServerRun()
while is_run do
&nbsp;&nbsp;client = server:accept()
&nbsp;&nbsp;client:settimeout(2)
&nbsp;&nbsp;&nbsp;&nbsp;local line, err = client:receive()
&nbsp;&nbsp;&nbsp;&nbsp;local result = evalString(line)
&nbsp;&nbsp;&nbsp;&nbsp;if not err then client:send(result.."&#92;n") end
&nbsp;&nbsp;&nbsp;client:close()
end
end

function OnInit(quik_path)
server = assert(socket.bind("127.0.0.1", IPPort))
end
</pre>
============= <br />
			<i>25.07.2022 11:30:28, Boris.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message64515/topic7514/</link>
			<guid>http://forum.quik.ru/messages/forum10/message64515/topic7514/</guid>
			<pubDate>Mon, 25 Jul 2022 11:30:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
