您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

50 行
1.6KB

  1. {-# LANGUAGE MultiWayIf #-}
  2. module IrcBot.BotNetwork where
  3. import Network.Socket hiding (send, sendTo, recv, recvFrom)
  4. import Network.Socket.ByteString (recv, sendAll)
  5. import qualified Data.ByteString.Char8 as C
  6. import Network.Connection
  7. readFromSocket :: Connection -> IO C.ByteString
  8. writeToSocket :: Connection -> String -> IO()
  9. writeToSocket sock stringData =
  10. do
  11. let socketString = stringData ++ "\n"
  12. let byteStringDataConverter = C.pack socketString
  13. connectionPut sock byteStringDataConverter
  14. print "SENT DATA IS: "
  15. print byteStringDataConverter
  16. readFromSocket sock =
  17. do
  18. msg <- connectionGet sock 1024
  19. case msg == C.empty of
  20. False -> do
  21. return msg
  22. True -> do
  23. return C.empty
  24. open :: String -> PortNumber -> Bool -> IO Connection
  25. open server port ssl = do
  26. ctx <- initConnectionContext
  27. -- sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
  28. print "CONNECTING"
  29. ctx <- initConnectionContext
  30. con <- connectTo ctx $ ConnectionParams
  31. { connectionHostname = server
  32. , connectionPort = port
  33. , connectionUseSecure = case ssl of
  34. True -> Just $ Network.Connection.TLSSettingsSimple False False True
  35. False -> Nothing
  36. , connectionUseSocks = Nothing
  37. }
  38. print "CONNECTED"
  39. return con