Your protocol has to be defined to work with proxies - it isn't automatic. The only advice anyone can really give you is to read the RFCs from http://www.ietf.com/rfc[^] for those proxy types to determine how you could include them along with your protocol definition. HTTP, for example, allows for proxies. This is why the HTTP-related classes (like HttpWebRequest) support proxies (a la the WebProxy) in the .NET BCL. It's common enough to warrant inclusion in the .NET BCL. How other protocols work with proxies is up to the protocol authors. Many typically work the same (there's a lot of HTTP-like protocols, like SMTP, DICT, etc.) so I'd imagine the proxy support works the same, making it easy to use the same proxies. What I'd recommend is using a good OO design to encapsulate your Socket client in a class and actually make use of the WebProxy for consistency (so people can reuse the same proxy; WebProxy also defaults to using the Internet Explorer settings for proxies, making it easy for your users to default to settings they might've already configured). You still need to work out how it'll work with your chat protocol, though. This posting is provided "AS IS" with no warranties, and confers no rights. Software Design Engineer Developer Division Sustained Engineering Microsoft [My Articles] [My Blog]