Quantcast
Channel: VBForums - Visual Basic .NET
Viewing all articles
Browse latest Browse all 27554

Get ip's of other computers in network for chat program

$
0
0
Hi everyone, i am trying to make a chat program. In the process i found alot of errors in my code already but now i seem stuck with getting all connected computers their ip adresses (only those who have the program open is okay as well) but i can't seem to find any of the 2.

All the code i have is a login and a chat module: (Ps: the login works)
The problem is as explained earlier that it only works local because i can't seem to find the code to find other people who are connecter and/or having my program open, their ip address.

Login:
Code:

'Login module
Imports System.Text
Imports System.Windows.Forms
Imports System.Net.Sockets

Public Class Login
    Public user As String
    Dim oChat As New DerdeTest.Chat
    Private Sub Login_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'Hier gebeurt wat je doet als je de login laadt
    End Sub
    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        AddHandler ButtonKies.Click, AddressOf ButtonKies_Click
        AddHandler Me.FormClosing, AddressOf Login_Closing
    End Sub
    Public Sub ButtonKies_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        user = TbUsername.Text
        If TbUsername.Text = "" Then
            MessageBox.Show("Vul alle velden correct in. Een gebruikersnaam tussen de 1-25 letters.")
            Exit Sub
        End If
        RemoveHandler Me.FormClosing, AddressOf Login_Closing
        Me.Dispose(False)
        oChat.Show()
    End Sub
    Public Sub Login_Closing(ByVal sender As System.Object, ByVal e As System.EventArgs)
        user = ""
    End Sub
End Class

Chat:
Code:

' Alle bibliotheken
Option Explicit On
Imports System.IO
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports DerdeTest.Login
Public Class Chat
    Dim HOST As String = System.Net.Dns.GetHostName() 'Verkrijg het Hostadres
    Dim IP As IPAddress() = System.Net.Dns.GetHostEntry(HOST).AddressList 'Verkrijg met behulp van het hostadres je iplijst

    Dim PORT As Int32 = 65400 ' Dim de poort op nummer
    Dim Client As New TcpClient 'Dim je client als tcp (waarom kan ik niet uitleggen)
    Dim Message As String = "" 'Dim je bericht als string

    Dim Listener As New TcpListener(PORT) 'Dim je listener en bind hem aan onze poort

    Dim strHostName As String = "localhost"
    Dim strIPAddress As String = ""
    Dim objAddressList() As System.Net.IPAddress = _
        System.Net.Dns.GetHostEntry(strHostName).AddressList
    Public Sub New()

        ' This call is required by the designer. 'stond er zowiso als ik een handler toevoegde.
        InitializeComponent()

        AddHandler ButtonZend.Click, AddressOf ButtonZend_Click
        AddHandler Me.Load, AddressOf Chat_Load
        AddHandler Me.FormClosing, AddressOf Chat_Leave
        AddHandler Timer1.Tick, AddressOf Timer_Tick
        ' 4 handlers zodat we geen problemen krijgen met deze en geen lange regels achter de private sub.
    End Sub
    Private Sub Chat_Load(ByVal sender As Object, ByVal e As System.EventArgs) 'Hier gebeurt wat je doet als je de chatbox laadt (na de login)
        rtb1.Text = (Login.user & " welkom in onze chatbox. ^^ ") ' Zet naam + wekomsbericht in rich text box
        Timer1.Start() 'Start de Timer
        Listener.Start() 'Start Listener
        Dim l As Integer
        For l = IP.Count - 1 To 0 Step -1
            If IP(l).ToString.Contains(":") = True Then
                Dim IP2 = (IP.ToList)
                IP2.Remove(IP(l))
                IP = IP2.ToArray
            End If
        Next
        For i As Integer = 0 To IP.Length - 1
            rtb1.Text += vbNewLine + IP(i).ToString
        Next
    End Sub
    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Wat gebeurt als timer tikt
        If Listener.Pending = True Then 'Listener.Pending = True maar verkort, dus dat de listener moet luisteren.
            Message = "" 'Zorgen dat het bericht leeg is
            Client = Listener.AcceptTcpClient()  'Zeg dat je client de listener accepteerd
            Dim Reader As New StreamReader(Client.GetStream()) 'Reader dimmen

            While Reader.Peek() > -1 'Zolang reader geen -1 is,
                Message &= Convert.ToChar(Reader.Read()).ToString ' zet het berciht om in karakters en lees het.
            End While
            'De uitleg hieronder was er en is er voor herinnering
            'Here you can enter anything you would like
            'to happen when a message is received,
            'For instance; Play a sound, Show a message Box, A Balloon Tip etc.
            rtb1.Text = Message
        End If
    End Sub
    Private Sub ButtonZend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Wat te doen als je zend
        Try
            Dim l As Integer
            For l = IP.Count - 1 To 0 Step -1
                If IP(l).ToString.Contains(":") = True Then
                    Dim IP2 = (IP.ToList)
                    IP2.Remove(IP(l))
                    IP = IP2.ToArray
                End If
            Next
            For i As Integer = 0 To IP.Length - 1
                Client = New TcpClient(IP(i).ToString, PORT)
                'zeg dat client gebonden is aan poort & ip jezelf
            Next
            Dim Writer As New StreamWriter(Client.GetStream()) 'Writer = dat het alles schrijft. Flush doet alles dat erin zit er geforceerd uit naar textbox.
            Writer.Write(rtb1.Text & vbNewLine & Login.user & " zegt: " & tbZend.Text)
            Writer.Flush()
            tbZend.Text = ""
            'Write the Message in the stream

        Catch
        End Try 'Stop doen.
    End Sub
    Private Sub Chat_Leave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs)
        rtb1.Text = rtb1.Text & (Login.user & " heb nog een fijne dag. :3" & vbNewLine & "Byebye.") 'Bericht voor als je weggaat maar je ziet dit niet met dat het te snel gebeurt, ik laat het hier staan om later ergens anders te zetten.
        Listener.Stop() 'Stop listener
        Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("DerdeTest")

        For Each p As Process In pProcess
            p.Kill()
        Next
    End Sub
End Class


Viewing all articles
Browse latest Browse all 27554

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>