How can I communicate through an HTTP proxy with TcpClient
in C#, kind of like WebProxy
when using HttpWebResponse
?
views:
2339answers:
4Well, TCP doesn't have anything directly equivalent to HTTP proxying. In HTTP, the client (generally) knows about the proxying - it talks to the proxy, and asks the proxy to connect to the real web server on its behalf.
TCP doesn't define that sort of thing, so any proxying would have to either be transparent (i.e. something that a router or the operating system does without the client knowing, e.g. with iptables) or as part of the protocol on top of TCP (HTTP proxying is a good example of this, as is SOCKS mentioned in a different answer).
If you go down to low-level socket programming, I'm pretty sure you'll need to write your own proxy client. If you're only dealing with the HTTP protocol, you're probably better off using HTTP-specific classes. If you need to do it with sockets, the HTTP spec describes the behavior of proxies reasonably well, so you could write your own client.
If you'd like to use a SOCKS proxy, there are already some SOCKS libraries written for C#. Try this one.
I have a free MIT licensed, open source proxy library. You can download it from my site www.starksoft.com or from Sourceforge. It is easy to use, works directly with the standard TcpClient object in .NET and supports multiple configurations and async calls. Works with HTTP, Socks4, Socks4a, and Socks5 proxy servers and comes with integrated help. It also works with Mono. Enjoy!
http://www.starksoft.com/prod_proxy.html
http://sourceforge.net/projects/starksoftproxyc/
Benton