gameServer/Utils.hs
changeset 1917 c94045b70142
parent 1804 4e78ad846fb6
child 1953 fd9c8e3c734d
--- a/gameServer/Utils.hs	Mon Mar 23 21:09:34 2009 +0000
+++ b/gameServer/Utils.hs	Thu Mar 26 13:54:02 2009 +0000
@@ -6,11 +6,22 @@
 import Data.Word
 import qualified Data.Map as Map
 import qualified Data.IntMap as IntMap
+import Numeric
+import Network.Socket
+import qualified Data.List as List
 -------------------------------------------------
 import qualified Codec.Binary.Base64 as Base64
 import qualified Codec.Binary.UTF8.String as UTF8
 import CoreTypes
 
+
+sockAddr2String :: SockAddr -> IO String
+sockAddr2String (SockAddrInet _ hostAddr) = inet_ntoa hostAddr
+sockAddr2String (SockAddrInet6 _ _ (a, b, c, d) _) =
+	return $ (foldr1 (.)
+		$ List.intersperse (\a -> ':':a)
+		$ concatMap (\n -> (\(a, b) -> [showHex a, showHex b]) $ divMod n 65536) [a, b, c, d]) []
+
 toEngineMsg :: String -> String
 toEngineMsg msg = Base64.encode (fromIntegral (length msg) : (UTF8.encode msg))