Hi all,
Thanks for all your help.
I finally realised that hGetLine strips out the "\n" newline character
so when I forward the line to the server, I need to append it again.
Here's my implementation.
-John
main = proxyServe
proxyServe = withSocketsDo $ do
socket <- listenOn $ PortNumber 8082
acceptConnection socket
acceptConnection socket = do
(handleToClient, hostName, portNumber) <- accept socket
handleToServer <- connectTo "127.0.0.1" (PortNumber 8080)
hSetBuffering handleToClient LineBuffering
hSetBuffering handleToServer LineBuffering
putStrLn $ "Socket accepted from " ++ hostName
forkIO (clientToServer handleToClient handleToServer)
forkIO (serverToClient handleToClient handleToServer)
acceptConnection socket
clientToServer handleToClient handleToServer = do
putStrLn "Streaming from client to server"
eof <- hIsEOF handleToClient
if not eof
then do
text <- hGetLine handleToClient
hPutStr handleToServer $ text ++ "\n"
hFlush handleToServer
putStr ("C: " ++ text ++ "\n")
clientToServer handleToClient handleToServer
else do
putStrLn "EOF from Client"
return ()
serverToClient handleToClient handleToServer = do
putStrLn "Streaming from server to client"
eof <- hIsEOF handleToClient
if not eof
then do
text <- hGetContents handleToServer
hPutStr handleToClient text
putStrLn $ "S: " ++ text
serverToClient handleToClient handleToServer
else do
putStrLn "EOF from Server"
return()
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe