| Sure, but from a "high level" or "sockets" perspective, especially as a beginner it shouldn't be something you need to care about. A bit simplified, the basic stuff you need to know is: 1) UDP uses packages/messages which may or may not reach its destination. If it reaches its destination the data is intact. Normally connectionless. 2) TCP is a stream protocol. There is no package/message boundary unless you create it yourself (my tip is to do a simple binary TLV (type length value) protocol using say a fixed 4 byte header). Requires a connection to be setup first. 3) Network byte order - really important to read about. 4) Nagles algorithm (TCP_NODELAY) and SO_KEEPALIVE - those are a couple of things to read about. 5) Start with the simple select() approach to handle the socket activity. You can then go ahead and get more advanced by doing nonblocking I/O or do blocking I/O with each client in its own thread, figuring out pros and cons for your use case. You can add SSL/TLS on top of your TCP connection etc. EDIT: The SO_KEEPALIVE part is perhaps least important thing to start reading about. I'm a bit biased due to NAT traversal problems as I wrote a secure remote access solution for a major company several years back, utilising STUN/TURN servers, public key authentication (basically certificate pinning), TLS etc. |