Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'd like my .NET app to use a proxy which i know how to do except .net doesnt support sock4a/sock5. I know how to setup my app but

How do i setup socat to at as a TCP proxy on part 1234 and use the sock5 server at

It must forward all TCP connect. I had luck with privoxy earlier but that only supports http connections

PS: I am on windows but the commands should be the same as linux

share|improve this question
socat has a very complete man page. – Pierre Carrier Jul 8 '12 at 16:46
@PierreCarrier i cant understand it. Also it doesnt explain the error messages i gotten and neither does google. – acidzombie24 Jul 9 '12 at 0:30
What protocols is the .NET application using? HTTP? – mgorven Jul 13 '12 at 16:28
up vote 3 down vote accepted

You didn't specify the destination host which you want to connect to through the SOCKS server. I've used on port 80 in this example.

socat TCP-LISTEN:1234,fork,socksport=5678

The TCP-LISTEN address is the port to listen on for connections from the .NET application. 1234 is obviously the port number, and the fork option allows multiple connections to be made. The SOCKS4A address is the SOCKS server and destination host to connect to. (If you don't want the SOCKS server to do DNS resolution change SOCKS4A to SOCKS4.) is the address of the SOCKS server, and the socksport option specifies the port of the SOCKS server. is the destination host and port to ask the SOCKS server to connect to.

share|improve this answer
This is the part thats confusing me. My .NET app should be able to visit google, yahoo, SO or any other site. Which is why it didnt make sense to set bc now it seems like no matter what site i want to visit it will always go to google? I want to say .NET use, its a SOCKS proxy that sits at and it will let you go whereever you want. (dns resolution on the socks proxy). What is the command to do that? – acidzombie24 Jul 13 '12 at 13:16
@acidzombie24 In that case your app needs to understand that there's a proxy there and actually talk to the proxy. socat can't magically know where the app wants to connect to. – mgorven Jul 13 '12 at 16:28
Thats fine and all but my app DOES know where to connect to. However how do i tell socat that info? I figured it out but w/o using socat. I wrote my own SOCKS code. It was time consuming :x – acidzombie24 Jul 13 '12 at 16:31
@acidzombie24 Your app knows, but it needs to tell the proxy that, which means that you need a protocol between the app and the proxy which can convey that information... like SOCKS. – mgorven Jul 13 '12 at 18:19

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.