Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System
- open System.IO
- open System.Net.Sockets
- open System.Text
- let GetNick nick = "NICK " + nick
- let GetUser user invisible description =
- if invisible then "USER " + user + " 8 * :" + description
- else "USER " + user + " 0 * : " + description
- // Отправка данных на сервер и консоль
- let SendData (data:string) (writer:TextWriter) =
- writer.WriteLine(data)
- writer.Flush()
- Console.WriteLine(data)
- writer
- // Создание подключения, отправка данных регистрации
- let OpenIrc server port nick user =
- let m_TcpIrcClient = new TcpClient(server, int(port))
- let m_Stream = m_TcpIrcClient.GetStream()
- new StreamWriter(m_Stream) |> SendData (GetNick nick) |> SendData (GetUser user true "Bot written in F#") |> ignore
- m_Stream
- let stream =
- let args:string[] = Environment.GetCommandLineArgs()
- OpenIrc args.[0] args.[1] args.[2] args.[3]
- let sr = new StreamReader(stream)
- let sw = new StreamWriter(stream)
- let SendPong server =
- let s = "PONG " + server
- SendData s sw
- // Цикл получения данных
- let rec GetData (s:TextReader) =
- let line = s.ReadLine()
- Console.WriteLine(line)
- let ircData0 = line.Substring(0, line.IndexOf(" "))
- match ircData0 with
- "PING" ->
- line.Substring(6) |> SendPong |> ignore
- GetData s
- | "PONG" ->
- GetData s
- | "ERROR" -> s
- | _ ->
- GetData s
- let d = GetData sr
- sw.Close()
- sr.Close()
- stream.Close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement