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:
Chat: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
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


Reply With Quote