<div dir="ltr"><div><div>I did not try your example yet but I think the issue is due to your local src.c_str() which is destroyed before the send action is really performed (send is a asynchronous function).<br></div>So you can try something like : <br>

<br>else<br>
    {<br>
        std::string str(args[1]);<br>
        std::size_t size = str.size();<br>        const char *s = str.c_str();<br>
        comm-&gt;Send(&amp;size, 1, /* remoteHandle */ 1, 0);<br>
        comm-&gt;Send(s, size, /* remoteHandle */ 1, 1);<br>
        cout &lt;&lt; &quot;Send&quot; &lt;&lt; endl;<br>
        cout &lt;&lt; str &lt;&lt; endl;<br>
        cout &lt;&lt; size &lt;&lt; endl;<br>
        for (std::size_t i = 0; i &lt; size; ++i)<br>
        {<br>
            cout &lt;&lt; int(str[i]) &lt;&lt; endl;<br>
        }    <br>        cout &lt;&lt; &quot;server comm-&gt;Barrier()&quot; &lt;&lt; endl;<br>
        comm-&gt;Barrier();<br>
    }<br>
<br><br></div>Regads,<br></div><div class="gmail_extra"><br clear="all"><div><b>Joachim Pouderoux</b><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><font size="1"><i>PhD, R&amp;D Enginee</i>r</font> <br>

<b><font size="1"><a href="http://www.kitware.fr" target="_blank">Kitware SAS</a></font></b><br></blockquote>
</div>
<br><br><div class="gmail_quote">2013/4/25 Henry Lehmann <span dir="ltr">&lt;<a href="mailto:henry.lehmann@informatik.tu-freiberg.de" target="_blank">henry.lehmann@informatik.tu-freiberg.de</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hello,<br>
<br>
I am playing around with vtkSocketCommunicator. I want to send integral data types and<br>
wrote a program to get myself into this topic. The source is at the end.<br>
If the program is started without command line arguments, vtkSocketCommunicator<br>
goes into server mode and waits for a connection at port 7777. If it is started<br>
with one command line argument, the string is send to the server who<br>
displays it in the terminal. However, the data is not transmitted correctly.<br>
<br>
Consider this example:<br>
At first start in server mode tp receive data:<br>
$ ./program<br>
Secondly start in client mode and send data:<br>
$ ./program ABCDEFGHIJKLMNOPQRSTUVWXYZ<br>
<br>
The output of the programs is as follows:<br>
<br>
Server:<br>
comm-&gt;WaitForConnection(7777)<br>
Receive<br>
ABCDEFGH???? MNOPQRSTUVWXYZ<br>
26<br>
65<br>
66<br>
67<br>
68<br>
69<br>
70<br>
71<br>
72<br>
1<br>
0<br>
0<br>
0<br>
77<br>
78<br>
79<br>
80<br>
81<br>
82<br>
83<br>
84<br>
85<br>
86<br>
87<br>
88<br>
89<br>
90<br>
comm-&gt;Barrier()<br>
comm-&gt;CloseConnection()<br>
<br>
Client:<br>
comm-&gt;ConnectTo(localhost, 7777)<br>
Send<br>
ABCDEFGHIJKLMNOPQRSTUVWXYZ<br>
26<br>
65<br>
66<br>
67<br>
68<br>
69<br>
70<br>
71<br>
72<br>
73<br>
74<br>
75<br>
76<br>
77<br>
78<br>
79<br>
80<br>
81<br>
82<br>
83<br>
84<br>
85<br>
86<br>
87<br>
88<br>
89<br>
90<br>
comm-&gt;Barrier()<br>
comm-&gt;CloseConnection()<br>
<br>
As you can see the data is not transmitted correctly and the numbers<br>
73, 74, 75, 76 are replaced by 1, 0, 0, 0.<br>
What am i doing wrong? Am i using this class not as intended?<br>
<br>
Thanks in advance,<br>
Henry.<br>
<br>
Source Code:<br>
<br>
#include &lt;vtkNew.h&gt;<br>
#include &lt;vtkSocketCommunicator.h&gt;<br>
#include &lt;vtkClientServerStream.h&gt;<br>
#include &lt;iostream&gt;<br>
#include &lt;string&gt;<br>
int main(int argc, char *args[])<br>
{<br>
    using namespace std;<br>
<br>
    vtkNew&lt;vtkSocketCommunicator&gt; comm;<br>
    comm-&gt;SetPerformHandshake(1);<br>
    if (argc == 1)<br>
    {<br>
        cout &lt;&lt; &quot;comm-&gt;WaitForConnection(7777)<u></u>&quot; &lt;&lt; endl;<br>
        comm-&gt;WaitForConnection(7777);<br>
    }<br>
    else if (argc == 2)<br>
    {<br>
        cout &lt;&lt; &quot;comm-&gt;ConnectTo(localhost, 7777)&quot; &lt;&lt; endl;<br>
        comm-&gt;ConnectTo(&quot;localhost&quot;, 7777);<br>
    }<br>
    comm-&gt;Handshake();<br>
    comm-&gt;Barrier();<br>
    if (comm-&gt;GetIsServer())<br>
    {<br>
        std::size_t size = 0;<br>
        comm-&gt;Receive(&amp;size, 1, /* remoteHandle */ 1, 0);<br>
        std::string str(size, &#39;\n&#39;);<br>
        comm-&gt;Receive(&amp;str[0], size, /* remoteHandle */ 1, 1);<br>
        cout &lt;&lt; &quot;Receive&quot; &lt;&lt; endl;<br>
        cout &lt;&lt; str &lt;&lt; endl;<br>
        cout &lt;&lt; size &lt;&lt; endl;<br>
        for (std::size_t i = 0; i &lt; size; ++i)<br>
        {<br>
            cout &lt;&lt; int(str[i]) &lt;&lt; endl;<br>
        }<br>
    }<br>
    else<br>
    {<br>
        std::string str(args[1]);<br>
        std::size_t size = str.size();<br>
        comm-&gt;Send(&amp;size, 1, /* remoteHandle */ 1, 0);<br>
        comm-&gt;Send(str.c_str(), size, /* remoteHandle */ 1, 1);<br>
        cout &lt;&lt; &quot;Send&quot; &lt;&lt; endl;<br>
        cout &lt;&lt; str &lt;&lt; endl;<br>
        cout &lt;&lt; size &lt;&lt; endl;<br>
        for (std::size_t i = 0; i &lt; size; ++i)<br>
        {<br>
            cout &lt;&lt; int(str[i]) &lt;&lt; endl;<br>
        }<br>
    }<br>
    cout &lt;&lt; &quot;comm-&gt;Barrier()&quot; &lt;&lt; endl;<br>
    comm-&gt;Barrier();<br>
    cout &lt;&lt; &quot;comm-&gt;CloseConnection()&quot; &lt;&lt; endl;<br>
    comm-&gt;CloseConnection();<br>
    return 0;<br>
}<br>
<br>
______________________________<u></u>_________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/<u></u>opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_<u></u>FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/<u></u>listinfo/vtkusers</a><br>
</blockquote></div><br></div>