
Hi Bulat, Thanks. Yes it helps with an earlier implementation I wrote (below). But surely there must be a better way to write this. My code is way to verbose. -John ---
doProxyServer handleToClient handleToServer = do eof <- hIsEOF handleToServer if not eof then do ready <- hReady handleToServer if ready then do text <- hGetChar handleToServer putChar text hPutChar handleToClient text doProxyServer handleToClient handleToServer else do hPutStr handleToClient "\n" doProxyClient handleToClient handleToServer else do hClose handleToServer hClose handleToClient
doProxyClient handleToClient handleToServer = do ready <- hReady handleToClient if ready then do text <- hGetChar handleToClient putChar text hPutChar handleToServer text doProxyClient handleToClient handleToServer else do hPutStr handleToServer "\n" doProxyServer handleToClient handleToServer
listen = withSocketsDo $ do putStrLn "Listening..." socket <- listenOn $ PortNumber 8082 (handleToClient, hostName, portNumber) <- accept socket putStrLn "Connected to client" handleToServer <- connectTo "localhost" (PortNumber 8080) hSetBuffering handleToServer LineBuffering putStrLn "Connected to server" doProxyClient handleToClient handleToServer hClose handleToServer putStrLn "Closed server" hClose handleToClient putStrLn "Closed client" sClose socket
main = listen
On 9/20/06, Bulat Ziganshin
Hello John,
Wednesday, September 20, 2006, 3:59:36 PM, you wrote:
I'm trying to use haskell to put together a TCP proxy I can put between my browser and my webserver.
This is as far as I got. The webserver isn't returning my request:
hSetBuffering handleToServer LineBuffering
may help
-- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com