You should not attempt to bind another listening socket to a port and address that you know a well known service is already running. What you are discussing is called socket hijacking. It is sometimes possible for one socket to bind to an address even if another socket is already bound to a less specific interface and port. For example, if you created a socket and bound it to IPAddress.Any on port 5000, it would be possible for another socket to come along afterwards and bind to a more specific interface (ie. the nic's IP address or loopback address). Often times instead of binding to a specific interface developers will take the easier route and bind using the IPAddress.Any address. This is fine, however it is vulnerable to the socket hijacking technique described above. If you are curious about this, just fire up a web browser and do a quick Google search for "Socket Hijacking", and you should find some relevant information.
So in review, do not do this. Even if it works, it's considered rude and extremely bad practice. I have tried this myself to bind on port 23 with telnet running, and I had no success. I would assume such a well known service such as Telnet will be very well written and bind to specific interfaces to prevent such a technique from being possible.
There is absolutely no reason that you cannot choose an open port to use, and make this the default port for your application. Review the list of well known ports here, http://www.iana.org/assignments/port-numbers and find one that is free. There's no more overhead in using an open port than there is to try and steal one that is in use. Also consider the debugging and support issues that might arise when trying to deploy an application that knowningly violates the respected rules of internet programming.
Try and use a port number that falls between 49152 through 65535. Those are considered open for private use. If you want, you can register your application and port number with IANA so that other developers won't be tempted to use your port number!
Dig Deeper on C# programming language
Related Q&A from Mark Belles
This expert response shows how to access VB .NET Windows control on the client side. Continue Reading
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.