title: Best protocol for embedded PIC microcontroller to communicate with server over the internet?
body: <p>Firstly, thank you for taking the time out to read this post.</p>
  
  <p>I'm looking to develope a TCP/IP enabled device using the Microchip PIC18 or PIC32 family of embedded microcontrollers with Microchip's TCP/IP Stack. However, my knowledge of networking is pretty basic at the moment, thus the reason for this post.</p>
  
  <p>Can anyone recommend the best protocol to use for my TPC/IP embedded device so that it can communicate with a server in a data centre? My intention is to have the embedded device located at a remote location somewhere over the internet, where the server can communicate with the device and download data such as thermometer probe readings to be stored in a database. I would also like the ability for the server in the data centre to be able to reconfigure settings and variables on the remote device should I need to.</p>
  
  <p>My research on protocols so far has lead me to the following options:</p>
  
  <ul>
  <li>SNMP v3 (version 3 due to encryption and authentication)</li>
  <li>UDP (though I read this can be unreliable but is fast)</li>
  <li>TCP (I'm not too clued up on this yet)</li>
  </ul>
  
  <p>Can anyone offer me advice on the best route to go down? I'm not expecting a detailed answer from you, but I would really like an idea of what topics/protocols to look into and research.</p>
  
  <p>My intent is to deploy many of these embedded devices over the internet where they all send their data back to the server.</p>
  
  <p>I assume that the remote embedded device will have to connect to the server rather than vice versa as the server will have a static IP address or DNS name, whereas the remote device addresses will be unknown.</p>
  
  <p>Any advice on this would be greatly appreciate. Please don't hesitate to ask if I've missed out any key information in this post.</p>
  
  <p>Many thanks.</p>
  
  <p>Rob </p>
  
  <p><em><strong></em>* UPDATE <em>*</em></strong>
  It was pointed out that I'm probably misusing the term Web Server, so I've amended my post to mention Server in a Data Centre instead. Thank you for pointing this out to me.</p>