добрый.
подробненько по полкам... не помню))
sunjob писал(а):как отследить прием ответа от сервера?
переводить сокет в режим LIST, отслеживать SOCK_ESTABLISHED не надо.
в режиме ESTABLISHED достаточно прочитать размер принятых данных:
-если размер принятых данных больше нуля (if len > 0) значит сервер отправил нам данные.
можем прочитать ответ сервера / можем не читать.
переходим к следующему пункту.
-если размер принятых данных равно нулю (if len == 0) значит сервер не отправлял нам никаких данных.
переходим к следующему пункту.
sunjob писал(а):- планирую "соединение" не закрывать принудительно, а работать с постоянно открытым соединением (когда оно будет закрыто по таймауту то открывать опять и... по кругу)
возможен/рабочий такой вариант?
возможен.
в режиме ESTABLISHED мы можем находиться сколь угодно долго...
в режиме ESTABLISHED сервер и w5500 находятся в режиме удержания соединения.
при этом сервер и w5500 каждые ~45 секунд обмениваются служебными пакетами ACK (подтверждая что соединение всё ещё открыто)
сервер [TCP keep-alive segment] > w5500 [TCP keep-alive segment]
сервер [TCP keep-alive segment] < w5500 [TCP keep-alive segment]
сервер [TCP keep-alive segment] > w5500 [TCP keep-alive segment]
....
....
....
всё это происходит автоматически... без нашего участия))
и так до тех пор пока мы (или сервер) не захочет разорвать соединение.
пока мы находимся в режиме ESTABLISHED мы можем в любой момент отправить данные серверу...
sunjob писал(а):не понятно как отследить прием ответа от сервера?
второй способ отследить прием ответа от сервера: настроить вывод INT на приём.
-если вывод INT лог "0" (if INT == 0) значит сервер отправил нам данные.
можем прочитать ответ сервера / можем не читать.
переходим к следующему пункту.
-если вывод INT лог "1" (if INT == 1) значит сервер не отправлял нам никаких данных.
переходим к следующему пункту.
я использую оба варианта одновременно:
-сначала читаю вывод INT.
-потом читаю размер принятых данных.
это я делаю... для надежности))

[uquote="sunjob",url="/forum/viewtopic.php?p=4677443#p4677443"]зачем закрывать соединение, если оно может понадобиться в ближ. время? ну а если не понадобиться, то "само закроется".[/uquote]
само оно не закроется...
кто-то должен его закрыть... или мы или сервер.
иначе будем сидеть в режиме ESTABLISHED до бесконечности... пока не отключат Интернет))
вообще... не нравится мне логика работы w5500...
поэтому я решил написать свой транспортный протокол... на меги328... чтоб было ещё интересней))
