<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic InterNiche TCP server: m_listen() and m_recv() in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/InterNiche-TCP-server-m-listen-and-m-recv/m-p/140976#M2374</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;hi there&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to implement a TCP server on the M52233DEMO with interniche's TCP/IP stack. However, cant seem to get m_recv() to work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I set up a socket called tcp_socket using m_listen() as follows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int e;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;tcp_sin.sin_addr.s_addr = (0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;tcp_sin.sin_port = (5005);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;tcp_socket = m_listen(&amp;amp;tcp_sin, tcp_cmdcb, &amp;amp;e);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m_ioctl(tcp_socket, SO_NONBLOCK, 0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and it works just fine. However, I dont know when to use m_recv():&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int err;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char tcp_data[10];&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;err =m_recv( tcp_socket, &amp;amp;tcp_data[0] , 9 );&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;printf("%i", err);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a task running that executes the above code. err always returns -1 which indicated that m_recv() failed. When I look at tcp_socket.error i see it equals to 6. This tells me that there is no tcp data available for the non-blocking socket. I have used ethereal to check and the board is receiving tcp data packets. Am I not using m_recv() properly?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my callback function tcp_cmdcb()&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int tcp_cmdcb(int code, M_SOCK so, void * data)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int e = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char tcp_data[10];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//LED3_TOGGLE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;switch(code)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case M_OPENOK:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;socket_ready=1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;case M_CLOSED:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m_close( so );&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;socket_ready=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;case M_RXDATA:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (socket_ready==1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;err =m_recv( tcp_socket, &amp;amp;tcp_data[0] , 9 );&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;printf("%i", err);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;case M_TXDATA:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;e = -1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;default:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dtrap();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;USE_VOID(data);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return e;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does anyone have any simple code to receive data form a single tcp socket using m_listen and m_recv()?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Kyle&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 22 Dec 2006 17:31:00 GMT</pubDate>
    <dc:creator>wyliek</dc:creator>
    <dc:date>2006-12-22T17:31:00Z</dc:date>
    <item>
      <title>InterNiche TCP server: m_listen() and m_recv()</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/InterNiche-TCP-server-m-listen-and-m-recv/m-p/140976#M2374</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;hi there&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to implement a TCP server on the M52233DEMO with interniche's TCP/IP stack. However, cant seem to get m_recv() to work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I set up a socket called tcp_socket using m_listen() as follows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int e;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;tcp_sin.sin_addr.s_addr = (0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;tcp_sin.sin_port = (5005);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;tcp_socket = m_listen(&amp;amp;tcp_sin, tcp_cmdcb, &amp;amp;e);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m_ioctl(tcp_socket, SO_NONBLOCK, 0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and it works just fine. However, I dont know when to use m_recv():&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int err;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char tcp_data[10];&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;err =m_recv( tcp_socket, &amp;amp;tcp_data[0] , 9 );&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;printf("%i", err);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a task running that executes the above code. err always returns -1 which indicated that m_recv() failed. When I look at tcp_socket.error i see it equals to 6. This tells me that there is no tcp data available for the non-blocking socket. I have used ethereal to check and the board is receiving tcp data packets. Am I not using m_recv() properly?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my callback function tcp_cmdcb()&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int tcp_cmdcb(int code, M_SOCK so, void * data)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int e = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char tcp_data[10];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//LED3_TOGGLE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;switch(code)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case M_OPENOK:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;socket_ready=1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;case M_CLOSED:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m_close( so );&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;socket_ready=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;case M_RXDATA:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (socket_ready==1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;err =m_recv( tcp_socket, &amp;amp;tcp_data[0] , 9 );&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;printf("%i", err);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;case M_TXDATA:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;e = -1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;default:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;dtrap();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;USE_VOID(data);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return e;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does anyone have any simple code to receive data form a single tcp socket using m_listen and m_recv()?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Kyle&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Dec 2006 17:31:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/InterNiche-TCP-server-m-listen-and-m-recv/m-p/140976#M2374</guid>
      <dc:creator>wyliek</dc:creator>
      <dc:date>2006-12-22T17:31:00Z</dc:date>
    </item>
    <item>
      <title>Re: InterNiche TCP server: m_listen() and m_recv()</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/InterNiche-TCP-server-m-listen-and-m-recv/m-p/140977#M2375</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;You cannot call m-recv from within the callback.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Use the web server as a example of how to use the queue with callback functions.&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 30 Dec 2006 01:16:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/InterNiche-TCP-server-m-listen-and-m-recv/m-p/140977#M2375</guid>
      <dc:creator>DrSeuss</dc:creator>
      <dc:date>2006-12-30T01:16:33Z</dc:date>
    </item>
  </channel>
</rss>

