
"Sven Eric Panitz"
...
I tried the following little test, which stays away from above functions:
module Main where
import BSD import SocketPrim import Socket (withSocketsDo)
main = Socket.withSocketsDo (do protNum <- getProtocolNumber "tcp" s <- socket AF_INET Stream protNum hostAddr <- inet_addr "157.189.164.68" let sAddr = (SockAddrInet (toEnum 8080) hostAddr) connect s sAddr i <- sendTo s "GET / HTTP/1.0\r\n\r\n" sAddr (str,l,imsAddr) <- recvFrom s 1000 putStr str )
But something I seem to be doing wrong.
During evaluation of 'recvFrom s 1000' I get the following error message (consistently for unix and windows):
Fail: SocketPrim.hsc:241: Non-exhaustive patterns in case
You're doing something slightly non-standard here, using recvfrom() on a connected socket, but I understand why you're doing it (as you don't have any other SocketPrim alternatives for sucking data off of a connected socket). This shows up a bug/problem in the implementation of 'recvFrom', I'm afraid. Conclusion: you're hosed with ghc-5.02.1 and its socket libs under Win32. Sorry. --sigbjorn btw, I've checked in a fix to 'recvFrom' and added wrappers for send() and recv(), but that won't help you short-term.