<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Force (UN)BIND with sockets - Any solution V2.3</title><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/506a77cb8c/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/CODESYS-V2/thread/506a77cb8c/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/CODESYS-V2/thread/506a77cb8c/</id><updated>2020-02-27T21:04:46.358000Z</updated><subtitle>Recent posts to Force (UN)BIND with sockets - Any solution V2.3</subtitle><entry><title>Force (UN)BIND with sockets - Any solution V2.3</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/506a77cb8c/?limit=25#8c5b" rel="alternate"/><published>2020-02-27T21:04:46.358000Z</published><updated>2020-02-27T21:04:46.358000Z</updated><author><name>Andreaz</name><uri>https://forge.codesys.com/u/andreaz/</uri></author><id>https://forge.codesys.comf63a55d9b661e21dbf55a2b599feba2d1ed04ce6</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;You'll have to use the system events for that, more specific the SysCallbackRegister function from SysLibCallback.lib:&lt;/p&gt;
&lt;p&gt;Reguster the callbacks like this (once in the program)&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;Init&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
   &lt;span class="nv"&gt;SysCallbackRegister&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;INDEXOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;NetVarClient_Callback&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;EVENT_STOP&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysCallbackRegister&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;INDEXOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;NetVarClient_Callback&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;EVENT_BEFORE_RESET&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;SysCallbackRegister&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;INDEXOF&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;NetVarClient_Callback&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;EVENT_BEFORE_DOWNLOAD&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;Init&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="c1"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Then close the sockets in the function callback&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;FUNCTION&lt;/span&gt; &lt;span class="n"&gt;NetVarClient_Callback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;BYTE&lt;/span&gt;
&lt;span class="n"&gt;VAR_INPUT&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;dwEvent&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DWORD&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;dwFilter&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DWORD&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;dwOwner&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt;  &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DWORD&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;END_VAR&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;Close&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;NetVarClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;After this the socket will be closed when you do a reset or download or stop.&lt;/p&gt;
&lt;p&gt;(You can open the NetVarUdp_LIB_V23.lib library to see it in action)&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Force (UN)BIND with sockets - Any solution V2.3</title><link href="https://forge.codesys.com/forge/talk/Codesys%2520V2.3/thread/506a77cb8c/?limit=25#f5e1" rel="alternate"/><published>2020-02-27T21:04:44.921000Z</published><updated>2020-02-27T21:04:44.921000Z</updated><author><name>PJE</name><uri>https://forge.codesys.com/u/pje/</uri></author><id>https://forge.codesys.com1c02a972902a8607b7287674a36fee9ca51a475d</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I'm having a small issue with rebinding to a port if I do a clean. I understand the software is keeping the socket open with the previous socket identifier, but locks out the new bind request.&lt;/p&gt;
&lt;p&gt;Is there an easy way to fix this on V2.3?&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;PJE&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>