This is a form of peer to peer connection I thought of. While it might not be secure through online connections, I intended to utilize this method on a local area network (such as a school computer lab):
+------+ +------+ +------+ | Peer |<----| Peer |<----| Peer | +------+ +------+ +------+ | ^ | | V | +------+ +------+ +------+ | Peer |---->| Peer |---->| Peer | +------+ +------+ +------+
The concept is that each peer will have two ports open to be connected to two other peers next to it. This forms like a circle of peers joining hands in connections where data is sent in one direction around the circle of peers. Each packet of data sent will contain the data for the program to be able to recognize the sender, receiver, and the message being sent. As each peer analyzes the packet: if the receiver is the current peer then it will be saved and the packet will cease to be cycled through the circle of peers, else if the receiver is not the current receiver then it will not be saved and it will be sent to the next peer, else if the receiver is everybody then the data will be saved and it will be cycled to the next peer.
Think of it like some friends in a circle who pass envelopes around in one direction. Each envelope is labeled with the sender and receiver. If the envelope is not meant to be sent to oneself, then they will pass it on to the person next to them who does the same thing if it’s not theirs. Until the person who is meant to receive it gets it, it will continue to be passed throughout the circle. If it’s a public message that everyone is supposed to see, then they will open it, read it, then pass it around until everyone had a chance to see it. In the case of computers, the peer knows when everyone has received the message if the message sent to them from the same person with the same content and message ID.
The results are similar to an internet relay chat except that there is no need for a server. Implementing a program to do this just takes willingness, imagination, and sockets.