Advertisement
Guest User

IRC Server

a guest
Sep 19th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 3.93 KB | None | 0 0
  1. Imports System.IO
  2. Imports System.Net
  3. Imports System.Net.Sockets
  4.  
  5. Public Class Form1
  6.     Dim ServerStatus As Boolean = False
  7.     Dim ServerTrying As Boolean = False
  8.     Dim Server As TcpListener
  9.     Dim Clients As New List(Of TcpClient)
  10.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  11.         CheckForIllegalCrossThreadCalls = False
  12.     End Sub
  13.  
  14.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  15.         StartServer()
  16.     End Sub
  17.  
  18.     Function StartServer()
  19.         If ServerStatus = False Then
  20.             ServerTrying = True
  21.             Try
  22.                 Server = New TcpListener(IPAddress.Any, 4305)
  23.                 Server.Start()
  24.                 ServerStatus = True
  25.                 Threading.ThreadPool.QueueUserWorkItem(AddressOf Handler_Client)
  26.             Catch ex As Exception
  27.                 ServerStatus = False
  28.             End Try
  29.             ServerTrying = False
  30.         End If
  31.         Return True
  32.     End Function
  33.  
  34.     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  35.         StopServer()
  36.     End Sub
  37.     Function StopServer()
  38.         If ServerStatus = True Then
  39.             ServerTrying = True
  40.             Try
  41.                 For Each Client As TcpClient In Clients
  42.                     Client.Close()
  43.                 Next
  44.                 Server.Stop()
  45.                 ServerStatus = False
  46.             Catch ex As Exception
  47.                 StopServer()
  48.             End Try
  49.             ServerTrying = False
  50.         End If
  51.         Return True
  52.     End Function
  53.     Function Handler_Client(ByVal state As Object)
  54.         Dim TempClient As TcpClient
  55.  
  56.         Try
  57.             Using Client As TcpClient = Server.AcceptTcpClient
  58.                 Console.Beep()
  59.                 If ServerTrying = False Then
  60.                     Threading.ThreadPool.QueueUserWorkItem(AddressOf Handler_Client)
  61.                 End If
  62.  
  63.                 Clients.Add(Client)
  64.                 TempClient = Client
  65.                 Dim TX As New StreamWriter(Client.GetStream)
  66.                 Dim RX As New StreamReader(Client.GetStream)
  67.                 If RX.BaseStream.CanRead = True Then
  68.                     While RX.BaseStream.CanRead = True
  69.  
  70.                         Dim RawData As String = RX.ReadLine
  71.                         RichTextBox1.Text += Client.Client.RemoteEndPoint.ToString + ">>" + RawData + vbNewLine
  72.                     End While
  73.                 End If
  74.  
  75.                 If RX.BaseStream.CanRead = False Then
  76.                     Client.Close()
  77.                     Clients.Remove(Client)
  78.                 End If
  79.                 ''   Console.Beep()
  80.             End Using
  81.             If TempClient.GetStream.CanRead = False Then
  82.                 TempClient.Close()
  83.                 Clients.Remove(TempClient)
  84.             End If
  85.         Catch ex As Exception
  86.             '' Console.Beep()
  87.             If TempClient.GetStream.CanRead = False Then
  88.                 TempClient.Close()
  89.                 Clients.Remove(TempClient)
  90.             End If
  91.         End Try
  92.  
  93.         Return True
  94.     End Function
  95.  
  96.     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  97.         Threading.ThreadPool.QueueUserWorkItem(AddressOf SendToClients, TextBox1.Text)
  98.     End Sub
  99.     Function SendToClients(ByVal Data As String)
  100.         If ServerStatus = True Then
  101.             If Clients.Count > 0 Then
  102.                 Try
  103.                     For Each Client As TcpClient In Clients
  104.                         Dim TX1 As New StreamWriter(Client.GetStream)
  105.                         ''   Dim RX1 As New StreamReader(Client.GetStream)
  106.                         TX1.WriteLine(Data)
  107.                         TX1.Flush()
  108.                     Next
  109.                 Catch ex As Exception
  110.                     SendToClients(Data)
  111.                 End Try
  112.             End If
  113.         End If
  114.         Return True
  115.     End Function
  116.  
  117. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement