<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/237311</link>
    <title>MATLAB Central Newsreader - pnet TCP connection bug</title>
    <description>Feed for thread: pnet TCP connection bug</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Fri, 10 Oct 2008 06:21:48 -0400</pubDate>
      <title>pnet TCP connection bug</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/237311#604589</link>
      <author>Fan Li</author>
      <description>I am using the latest 2.0.6 version of TCP/UDP/IP toolbox (pnet) on&lt;br&gt;
Matlab R2008a with Win XP Pro SP3. I am setting up a pair of tcp&lt;br&gt;
sockets on localhost to send/receive short messages. The overarching&lt;br&gt;
goal is to have a server-client style communication between two matlab&lt;br&gt;
processes for data acquisition during visual experiments.&lt;br&gt;
&lt;br&gt;
Here are example code (one for the server side and one for client):&lt;br&gt;
&lt;br&gt;
server side:&lt;br&gt;
sockcon = pnet('tcpsocket', 8889); % only create this socket once&lt;br&gt;
quit = false;&lt;br&gt;
while ~quit&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serv=pnet(sockcon,'tcplisten', 'noblock');&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if serv ~= -1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;% if someone connected to this data socket&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pnet(serv,'setreadtimeout', 1);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;received = pnet(serv,'readline','noblock');&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;received&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pnet(serv, 'close');&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
client side:&lt;br&gt;
sockcon = pnet('tcpsocket', 8888); % only create this socket once&lt;br&gt;
con=pnet('tcpconnect','localhost',8889);&lt;br&gt;
pnet(con,'setwritetimeout', 1);&lt;br&gt;
cmd = 'here is a test command';&lt;br&gt;
pnet(con,'printf', '%s\n', cmd);&lt;br&gt;
pnet(con, 'close');&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
To run, create both sockets (one in each matlab process), then let the&lt;br&gt;
server-side loop while listening for a tcp connection. The client side&lt;br&gt;
code sends a command to the server, which should be picked up by the&lt;br&gt;
&quot;readline&quot;.&lt;br&gt;
&lt;br&gt;
The odd behavior that I am getting is that sometimes the server&lt;br&gt;
successfully receives the message, but sometimes returns an empty&lt;br&gt;
string from the readline command. It seems to be random, and I cannot&lt;br&gt;
see a pattern in when it returns empty string versus the correct&lt;br&gt;
string.&lt;br&gt;
&lt;br&gt;
Can anyone duplicate this or has anyone seen this kind of behavior&lt;br&gt;
before?&lt;br&gt;
&lt;br&gt;
Thanks,&lt;br&gt;
Fan</description>
    </item>
  </channel>
</rss>

