Advertisement
mabu

Connect to IRC server

Mar 13th, 2015
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.55 KB | None | 0 0
  1. open System
  2. open System.IO
  3. open System.Net.Sockets
  4. open System.Text
  5.  
  6. let GetNick nick = "NICK " + nick
  7.  
  8. let GetUser user invisible description =
  9.     if invisible then "USER " + user + " 8 * :" + description
  10.     else "USER " + user + " 0 * : " + description
  11.  
  12. // Отправка данных на сервер и консоль
  13. let SendData (data:string) (writer:TextWriter) =
  14.     writer.WriteLine(data)
  15.     writer.Flush()
  16.     Console.WriteLine(data)
  17.     writer
  18.  
  19. // Создание подключения, отправка данных регистрации
  20. let OpenIrc server port nick user =
  21.     let m_TcpIrcClient = new TcpClient(server, int(port))
  22.     let m_Stream = m_TcpIrcClient.GetStream()
  23.     new StreamWriter(m_Stream) |> SendData (GetNick nick) |> SendData (GetUser user true "Bot written in F#") |> ignore
  24.     m_Stream
  25.  
  26. let stream =
  27.     let args:string[] = Environment.GetCommandLineArgs()
  28.     OpenIrc args.[0] args.[1] args.[2] args.[3]
  29.  
  30. let sr = new StreamReader(stream)
  31.  
  32. let sw = new StreamWriter(stream)
  33.  
  34. let SendPong server =
  35.     let s = "PONG " + server
  36.     SendData s sw
  37.  
  38. // Цикл получения данных
  39. let rec GetData (s:TextReader) =
  40.     let line = s.ReadLine()
  41.     Console.WriteLine(line)
  42.     let ircData0 = line.Substring(0, line.IndexOf(" "))
  43.     match ircData0 with
  44.     "PING" ->
  45.         line.Substring(6) |> SendPong |> ignore
  46.         GetData s
  47.     | "PONG" ->
  48.         GetData s
  49.     | "ERROR" -> s
  50.     | _ ->
  51.         GetData s
  52.  
  53. let d = GetData sr
  54.  
  55. sw.Close()
  56. sr.Close()
  57. stream.Close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement