multiple matches on the same network interface but in different processes
A "match" is the game match. It requires that all players in the match get told about all other players in the match.
A "network interface" is an abstraction of a physical network card (may be multiple cards for redundancy) and typically has one network address (may have more for various reasons.)
A "process" is an operating system concept that runs an executable, and a context within which a single unit like a file descriptor or socket makes sense (may be inherited across sub-prcesses based on OS.)
A match runs within a process. A process can run more than one match, if it has a way of distinguishing which match incoming packets are intended for.
More than one process CAN bind sockets to the same UDP port, but this is generally a bad idea.
For UDP traffic, when a packet comes in to a network interface for a particular port, any ONE of the sockets that are bound to that port will get that packet.
This means that, if you have multiple processes binding to the same port through different sockets, you have no control over which process gets the data, and because matches are within a process, you can't route the apporpriate packet to the appropriate match.
The solution is typically one of:
1) Use a single process, and single socket receiving on the port, but run many matches within the same process, and use data in the packet to identify the match that a particular incoming packet is meant for.
2) Use multiple processes, but bind each process to a different UDP port. Tell the match players which port to send data to to route it to the right match.
In addition, option 1) probably also want to use multiple threads, to make it scale across CPU cores. Option 2) typically doesn't need that, because each process can be scheduled on a different core.
Ok thanks for the full explanation. If I am to distribute my matches between multiple processes would I have to write a program that acts as an initializer for these processes? So basically that initializer program would be running 24/7 instead of the multiple processes. It handles the initial connection packets and every time a match is full it starts a new process on a new port. However I was also thinking this could be done from within each process itself where after 10 people are in one match the process just launches another instance of itself. Closing the process of course could be done by the process itself when the match is over.