diff options
| author | David Terei <davidterei@gmail.com> | 2011-07-20 11:09:03 -0700 |
|---|---|---|
| committer | David Terei <davidterei@gmail.com> | 2011-07-20 11:26:35 -0700 |
| commit | 16514f272fb42af6e9c7674a9bd6c9dce369231f (patch) | |
| tree | e4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/lib/socket/socket003.hs | |
| parent | ebd422aed41048476aa61dd4c520d43becd78682 (diff) | |
| download | haskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz | |
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/lib/socket/socket003.hs')
| -rw-r--r-- | testsuite/tests/lib/socket/socket003.hs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/testsuite/tests/lib/socket/socket003.hs b/testsuite/tests/lib/socket/socket003.hs new file mode 100644 index 0000000000..ea88a34dde --- /dev/null +++ b/testsuite/tests/lib/socket/socket003.hs @@ -0,0 +1,43 @@ +{- server + +As for net001 but gets the system to allocate the next free port +number. It also prints out the IP number of the peer. + +TESTS: + getSocketName + inet_ntoa + +-} + +module Main where + +import SocketPrim + + +main = + socket AF_INET Stream 6 >>= \ s -> + bindSocket s (SockAddrInet aNY_PORT iNADDR_ANY) >> + getSocketName s >>= \ (SockAddrInet port _) -> + putStr ("Allocated Port Number: " ++ show port ++ "\n") >> + listen s 5 >> + + + let + loop = + accept s >>= \ (s',(SockAddrInet _ haddr)) -> + inet_ntoa haddr >>= \ na -> + putStr ("*** Start of Transfer from: " ++ na ++ "***\n") >> + let + read_all = + readSocket s' 4 >>= \ (str, nbytes) -> + if nbytes /= 0 then + putStr str >> + read_all + else + putStr "\n*** End of Transfer ***\n" >> + sClose s' + in + read_all + in + loop + |
