packages feed

socket-sctp-0.2.0.0: tests/SendAll.hsc

{-# LANGUAGE OverloadedStrings #-}
#include "netinet/sctp.h"
#ifdef SCTP_SENDALL
module Main where

import System.Socket
import System.Socket.Type.SequentialPacket
import System.Socket.Protocol.SCTP as SCTP
import System.Socket.Family.Inet as Inet
import Control.Monad

main :: IO ()
main = do
  server <- socket :: IO (Socket Inet SequentialPacket SCTP)
  client1 <- socket :: IO (Socket Inet SequentialPacket SCTP)
  client2 <- socket :: IO (Socket Inet SequentialPacket SCTP)
  bind server addr
  listen server 5
  connect client1 addr
  connect client2 addr
  SCTP.sendMessage
    server
    "hallo"
    Nothing
    0
    sendall
    0
    3
    0
  (msg1, _, _, _) <- SCTP.receiveMessage client1 4096 mempty
  when (msg1 /= "hallo") (error "0")
  (msg2, _, _, _) <- SCTP.receiveMessage client2 4096 mempty
  when (msg2 /= "hallo") (error "1")

addr :: SocketAddress Inet
addr  = SocketAddressInet Inet.inetLoopback 7777

#else

module Main where

main :: IO ()
main = return ()

#endif