title: Designing object oriented synchronous receiver and transmitter
body: <p>I'm working on a project for a data communications class that is a synchronous transmitter and receiver. The transmitter will be the server using sockets and when receiver client connects it will fork and send a message to the receiver that is is stored in a text file given as an argument on server startup.</p>
  
  <p>My question is not implementation, I know how to implement all this functionality. My question is how to organize this into classes etc in C++.</p>
  
  <p>The messages will be 2 SYN characters, a control character indicating length of message, and up to 64 bytes of message data.</p>
  
  <p>My first thought automatically is that I want a server class and a client class. I will have 2 main functions, one will have a server(transmitter) object, the other will have a client (receiver) object. Moving up from these highest level classes I don't know how to organize the lower level stuff.</p>
  
  <p>I need a distinct "physical", "data link", and "application" layers. Physical layer will handle converting message to binary, calculating parity, etc. data link layer will frame the messages, and the application will be the highest level. How to organize these? Namespaces? </p>
  
  <p>Like I said, implementation is not my problem. Just design, I often get frustrated because I feel we aren't taught enough on the design and organization of things. C++ is my area of expertise, C is fine also, I just have zero experience doing advanced applications without classes and the such.</p>
  
  <p>Feel free to recommend reading in the classic Design Patterns book as I have a copy of that. Thanks for the help everyone.</p>