Other answers are correct, but somewhat incomplete.
The “connection” of an IP socket (in other words, “INET”) (that is, the connection between two processes, possibly on different machines) is determined by the 5th tuple: protocol, source address, source port, destination address, destination port. You can see that this is not limited to connecting to a state such as TCP.
This means that you can bind different processes to any unique instance of this 5th tuple. Since the “protocol” (for example, TCP and UDP) is part of the differentiating factor, each can have its own process.
Theoretically, you can associate different services with the same TCP port if they communicate with different interfaces (network cards, cable, etc.), although I have never tried.
However, it is standard practice to always use the same service on the same port number. If both UDP and TCP are supported, these are simply different ways of communicating with the same service. DNS, for example, uses UDP for port 53 to search because it is small queries, and it is faster than creating a TCP connection, but DNS also uses TCP for port 53 for "transfers", which are rare and can contain large amounts of data.
Finally, with complete accuracy, this is not necessarily a 5-tuple. IP uses a “protocol” to go to the next level, such as TCP and UDP, although there are others. TCP and UDP separately distinguish between connections based on the remaining 4 elements. You can create other protocols over IP that use completely different (possibly without ports) differentiation mechanisms.
In addition, there are different "domain" sockets, such as the domain of socket "unix", which is completely different from the "inet" and uses the file system for addressing.