Skip to content

Sequent reading from socket/connection on Windows fails

I wrote a simple TCP-client, which consumes and produces 8-byte packets.

When I run it on linux, it works perfectly, being part of the loop (write-read-write-read-...).

On windows it receives only first msg from the other side (write-read-write-write-...). The packets are still going, although.

Before that, I used the sockets directly; changing to HandleStream didn't help.

The code is:

transmit :: Int -> HandleStream ByteString -> ByteString -> IO [Bytestring]
transmit delay sock packet = do
    let input = timeout delay $ sock `readBlock` 8 <* putStrLn "\nData was read!"

    sock `writeBlock` pack

    strings <- whileJust input

    return [str | Right str <- strings]

whileJust action = do
    result <- action

    case result of 
        Just a  -> (:) <$> return a <*> whileJust action
        Nothing -> return []
Trac metadata
Trac field Value
Version 7.4.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component libraries/haskell2010
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information