<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Problem connecting to TCP server - task freezes</title><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/2197078238/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/2197078238/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/CODESYS-V2/thread/2197078238/</id><updated>2020-02-27T21:16:58.455000Z</updated><subtitle>Recent posts to Problem connecting to TCP server - task freezes</subtitle><entry><title>Problem connecting to TCP server - task freezes</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/2197078238/?limit=25#edd0" rel="alternate"/><published>2020-02-27T21:16:58.455000Z</published><updated>2020-02-27T21:16:58.455000Z</updated><author><name>danyamian</name><uri>https://forge.codesys.com/u/danyamian/</uri></author><id>https://forge.codesys.comab4ea8c846ca057a61090ed517863c42b13a6e70</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Strucc hat geschrieben:&lt;/strong&gt;&lt;br/&gt;
The following code is non-blocking, works fine. It has to be called until xConnected or a timeout reached (a TON for example).&lt;br/&gt;
On your platform the SOCKET_TCP_NODELAY might not be called. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;xConnected&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;diSocketID&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;.&lt;span class="nv"&gt;sin_addr&lt;/span&gt;   :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysSockInetAddr&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sIPAddr&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;.&lt;span class="nv"&gt;sin_port&lt;/span&gt;   :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysSockHtons&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;uiPort&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;.&lt;span class="nv"&gt;sin_family&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SOCKET_AF_INET&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;diSocketID&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;SysSockCreate&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diAddressFamily&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SOCKET_AF_INET&lt;/span&gt;,
                     &lt;span class="nv"&gt;diType&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SOCKET_STREAM&lt;/span&gt;,
                     &lt;span class="nv"&gt;diProtocol&lt;/span&gt;          :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;diSocketID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SOCKET_INVALID&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="k"&gt;RETURN&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SOL&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SO_SNDBUF&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diMaxDataSize&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diMaxDataSize&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SOL&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SO_RCVBUF&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diMaxDataSize&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diMaxDataSize&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SOL&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SO_LINGER&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;lOptLinger&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;lOptLinger&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_IPPROTO_TCP&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_TCP_NODELAY&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;xOptNoDelay&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,    &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;xOptNoDelay&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockIoctl&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_FIONBIO&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diNonBlocking&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;xSelect&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;NOT&lt;/span&gt; &lt;span class="nv"&gt;xSelect&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;SysSockConnect&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="nv"&gt;xConnected&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;ELSE&lt;/span&gt;
      &lt;span class="nv"&gt;xSelect&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;xUseSelect&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="k"&gt;ELSE&lt;/span&gt;
   &lt;span class="nv"&gt;fdWrite&lt;/span&gt;.&lt;span class="nv"&gt;fd_count&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;fdWrite&lt;/span&gt;.&lt;span class="nv"&gt;fd_array&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;diSocketID&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;SysSockSelect&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;SOCKET_FD_SETSIZE&lt;/span&gt;,&lt;span class="mi"&gt;0&lt;/span&gt;,&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;fdWrite&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,&lt;span class="mi"&gt;0&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;tvTimeout&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="nv"&gt;xConnected&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Hi, I'm working on a similar project. I have a raspberry in which I need to run a TCP server where I will receive messages from clients by sockets. I can not get it to work properly, have you managed to get it to work properly? Do you have more information on the server or a example project?&lt;/p&gt;
&lt;p&gt;Thank you very much.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem connecting to TCP server - task freezes</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/2197078238/?limit=25#a30f" rel="alternate"/><published>2020-02-27T21:16:54.427000Z</published><updated>2020-02-27T21:16:54.427000Z</updated><author><name>fulminator</name><uri>https://forge.codesys.com/u/fulminator/</uri></author><id>https://forge.codesys.com17ef0c153c2ba425085021f6caf056a018eb8efd</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hello, the ftp link seems broke. Can you guys help me with a functional example of socket TCP_IP communication on SysLibSocketsAsync.lib library? Thank you.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem connecting to TCP server - task freezes</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/2197078238/?limit=25#bd81" rel="alternate"/><published>2020-02-27T21:16:52.920000Z</published><updated>2020-02-27T21:16:52.920000Z</updated><author><name>Strucc</name><uri>https://forge.codesys.com/u/strucc/</uri></author><id>https://forge.codesys.comfa2be16d6273c6e6d03ec3ed4bfcc5858c225aef</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;The following code is non-blocking, works fine. It has to be called until xConnected or a timeout reached (a TON for example).&lt;br/&gt;
On your platform the SOCKET_TCP_NODELAY might not be called. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;xConnected&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;diSocketID&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;.&lt;span class="nv"&gt;sin_addr&lt;/span&gt;   :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysSockInetAddr&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sIPAddr&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;.&lt;span class="nv"&gt;sin_port&lt;/span&gt;   :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysSockHtons&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;uiPort&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;.&lt;span class="nv"&gt;sin_family&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SOCKET_AF_INET&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;diSocketID&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;SysSockCreate&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diAddressFamily&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SOCKET_AF_INET&lt;/span&gt;,
                     &lt;span class="nv"&gt;diType&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SOCKET_STREAM&lt;/span&gt;,
                     &lt;span class="nv"&gt;diProtocol&lt;/span&gt;          :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;diSocketID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SOCKET_INVALID&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="k"&gt;RETURN&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SOL&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SO_SNDBUF&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diMaxDataSize&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diMaxDataSize&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SOL&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SO_RCVBUF&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diMaxDataSize&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diMaxDataSize&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SOL&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_SO_LINGER&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;lOptLinger&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;lOptLinger&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_IPPROTO_TCP&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_TCP_NODELAY&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;xOptNoDelay&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,    &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;xOptNoDelay&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockIoctl&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_FIONBIO&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;diNonBlocking&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;xSelect&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;NOT&lt;/span&gt; &lt;span class="nv"&gt;xSelect&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;SysSockConnect&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;diSocketID&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;saSocketAddress&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="nv"&gt;xConnected&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;ELSE&lt;/span&gt;
      &lt;span class="nv"&gt;xSelect&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;xUseSelect&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;span class="k"&gt;ELSE&lt;/span&gt;
   &lt;span class="nv"&gt;fdWrite&lt;/span&gt;.&lt;span class="nv"&gt;fd_count&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;fdWrite&lt;/span&gt;.&lt;span class="nv"&gt;fd_array&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;diSocketID&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;SysSockSelect&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;SOCKET_FD_SETSIZE&lt;/span&gt;,&lt;span class="mi"&gt;0&lt;/span&gt;,&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;fdWrite&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,&lt;span class="mi"&gt;0&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;.&lt;span class="nv"&gt;tvTimeout&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
      &lt;span class="nv"&gt;xConnected&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>Problem connecting to TCP server - task freezes</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/2197078238/?limit=25#cecb" rel="alternate"/><published>2020-02-27T21:16:48.726000Z</published><updated>2020-02-27T21:16:48.726000Z</updated><author><name>pnn</name><uri>https://forge.codesys.com/u/pnn/</uri></author><id>https://forge.codesys.come0c7ddecf992bd4b34f3401b3d1bc464152ab427</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;thanks for the reply.&lt;br/&gt;
I got OSCAT networking library, checked the code and tried some stuff. But this was pure guess-work, and indeed didn't work   &lt;/p&gt;
&lt;p&gt;Isn't there a simple non-blocking way to only check if there is something at given IP address?&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem connecting to TCP server - task freezes</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/2197078238/?limit=25#aca8" rel="alternate"/><published>2020-02-27T21:16:47.268000Z</published><updated>2020-02-27T21:16:47.268000Z</updated><author><name>t.lundahl</name><uri>https://forge.codesys.com/u/t-lundahl/</uri></author><id>https://forge.codesys.com98ac0eb98cb5b8165a04662d82246116af8035c4</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Wago have a PLC called 750-881 and a programmable controler with the number 750-841.&lt;br/&gt;
Don't know what it has to do with the code.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem connecting to TCP server - task freezes</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/2197078238/?limit=25#f133" rel="alternate"/><published>2020-02-27T21:16:43.078000Z</published><updated>2020-02-27T21:16:43.078000Z</updated><author><name>Strucc</name><uri>https://forge.codesys.com/u/strucc/</uri></author><id>https://forge.codesys.com2323bd94e83d87986142aa77bcc1c9a1eda71ac1</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;That's right, by default all the calls of SysLibSockets library are blocking.&lt;/p&gt;
&lt;p&gt;I recommend to check the OSCAT networking libray, see &lt;a class="" href="http://www.oscat.de" rel="nofollow"&gt;http://www.oscat.de&lt;/a&gt;, and browse the source for solution.&lt;br/&gt;
In the IP_CONROL FB (under the HARDWARE folder), section TC_INIT, you will see the right way to use SysSockConnect. &lt;br/&gt;
I think, the relevant part is: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;plc_841&lt;/span&gt; &lt;span class="nv"&gt;OR&lt;/span&gt; &lt;span class="nv"&gt;plc_881&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="nv"&gt;SysSockSetOption&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;socket&lt;/span&gt;,&lt;span class="mi"&gt;6&lt;/span&gt;,&lt;span class="nv"&gt;SOCKET_TCP_NODELAY&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dint_true&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dint_true&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;; (* Set Push-Bit *)&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;SysSockIoctl&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;socket&lt;/span&gt;, &lt;span class="nv"&gt;SOCKET_FIONBIO&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;dint_true&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;; (* NonBlocking mode *)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;And then, once you told ioctl to go to nonblocking mode, "select" might have called after SysSockConnect. (and also before read and write operations) The code used in OSCAT tries to determine if "select" is needed...&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;      &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;c_select&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;FALSE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
         &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;SysSockConnect&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;socket&lt;/span&gt;,&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sockaddr&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,&lt;span class="nv"&gt;SIZEOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;sockaddr&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="nv"&gt;c_ready&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;; (* Connected *)&lt;/span&gt;
            &lt;span class="nv"&gt;state&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;C_WAIT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
         &lt;span class="k"&gt;ELSE&lt;/span&gt;
            &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;Connect&lt;/span&gt; &lt;span class="nv"&gt;durchgef&lt;/span&gt;ü&lt;span class="nv"&gt;hrt&lt;/span&gt;, &lt;span class="nv"&gt;aber&lt;/span&gt; &lt;span class="nv"&gt;noch&lt;/span&gt; &lt;span class="nv"&gt;nicht&lt;/span&gt; &lt;span class="nv"&gt;verbunden&lt;/span&gt;, &lt;span class="nv"&gt;dann&lt;/span&gt; &lt;span class="nv"&gt;optional&lt;/span&gt; &lt;span class="nv"&gt;mit&lt;/span&gt; &lt;span class="nv"&gt;select&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;abfrage&lt;/span&gt; &lt;span class="nv"&gt;weitermachen&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
            &lt;span class="nv"&gt;c_select&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SYSLIBSOCKETS_OPTION&lt;/span&gt;.&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;; (* Bit 0 = TCP-Client - use SysSockselect *)&lt;/span&gt;
         &lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;ELSE&lt;/span&gt;
         &lt;span class="nv"&gt;c_Timeout&lt;/span&gt;.&lt;span class="nv"&gt;tv_sec&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
         &lt;span class="nv"&gt;c_Timeout&lt;/span&gt;.&lt;span class="nv"&gt;tv_usec&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
         &lt;span class="nv"&gt;c_fdWrite&lt;/span&gt;.&lt;span class="nv"&gt;fd_count&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
         &lt;span class="nv"&gt;c_fdWrite&lt;/span&gt;.&lt;span class="nv"&gt;fd_array&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;socket&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
         &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;SysSockSelect&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;SOCKET_FD_SETSIZE&lt;/span&gt;,&lt;span class="mi"&gt;0&lt;/span&gt;,&lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;c_fdWrite&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;,&lt;span class="mi"&gt;0&lt;/span&gt;, &lt;span class="nv"&gt;ADR&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;c_Timeout&lt;/span&gt;&lt;span class="ss"&gt;))&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
            &lt;span class="nv"&gt;c_ready&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt;&lt;span class="c1"&gt;; (* Connected *)&lt;/span&gt;
            &lt;span class="nv"&gt;state&lt;/span&gt;:&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;C_WAIT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
         &lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      &lt;span class="nv"&gt;END_IF&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;The other option, is to use SysLibSocketsAsync.lib, but there are some platforms where it's not available. In this case, instead of functions function blocks are called...&lt;/p&gt;
&lt;p&gt;(I hope it's not a problem to quote from OSCAT. It's almost like a cookbook for many of us, thanks for the authors. Btw: Does someone know, what are  plc_841 and plc_881 bool variables in OSCAT IP_CONTROL? And what is the difference between IP_CONTROL and IP_CONTROL2?&lt;/p&gt;
&lt;p&gt;(This could be asked at the OSCAT forum... but once we are here...)&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Problem connecting to TCP server - task freezes</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/2197078238/?limit=25#52d6" rel="alternate"/><published>2020-02-27T21:16:41.617000Z</published><updated>2020-02-27T21:16:41.617000Z</updated><author><name>pnn</name><uri>https://forge.codesys.com/u/pnn/</uri></author><id>https://forge.codesys.com82ad2864be5b1d96514c31ecb1a32e3aea976e5e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I'm trying the TcpIp.pro example project from here&lt;br/&gt;
&lt;a class="" href="ftp://ftp2.3s-software.com/pub/Examples/Projects/CoDeSysV2.3/Communication/TcpIp/" rel="nofollow"&gt;ftp://ftp2.3s-software.com/pub/Examples ... ion/TcpIp/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I need to use the TCPClient() program to connect to a TCP server.&lt;br/&gt;
It works OK if the server is present &amp;amp; listening. But if the server is not present, the task to which TCPClient() program belongs freezes really badly - in the Task Configuration, for a given period, the run counter for this task increments by 7-8 while the counter for another task with equal priority and cycle time increments by 1000 for the same period. This is if I load the project to PLCWinNT emulator. &lt;/p&gt;
&lt;p&gt;If I load the project to a real PLC, the task freezes completely - run counter increments by 1 every 50 - 60 seconds.&lt;br/&gt;
As far as I can tell, the problem is in the function call &lt;br/&gt;
SysSockConnect(diSocket, ADR(sa), SIZEOF(sa))&lt;br/&gt;
which returns after a really huge period of time if there is nothing to connect to.&lt;/p&gt;
&lt;p&gt;So my question is, what can I do to avoid this task freezing? SysSockConnect doesn't have a timeout parameter.&lt;br/&gt;
Is there a simple way to just check if a device is present, like ping ?&lt;/p&gt;
&lt;p&gt;Thanks for any suggestions.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>