vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: TCP IP CHAT 
Autor: yellyjones
Datum: 07.11.02 14:35

Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.Text

Public Class Chat
Private Shared m_Client As UDPClient

Private Shared ListenerPort As Integer = 8080
Private Shared SenderPort As Integer = 8080
Private Shared LocalPort As Integer
Private Shared RemotePort As Integer

Private Shared m_szHostName As String

Private Shared m_GroupAddress As IPAddress
Private Shared m_LocalHost As IPHostEntry
Private Shared m_RemoteEP As IPEndPoint

Private Shared m_Done As Boolean = False

Public Shared Sub Usage()
Console.WriteLine("UDP Multicast Chat Utility")
Console.WriteLine("\nVerwendung:")
Console.WriteLine("chat.exe")
End Sub

Public Shared Sub Main()
LocalPort = SenderPort
RemotePort = ListenerPort
Dim args As String() = Environment.GetCommandLineArgs()

If (args.Length > 1) Then
' print help message, as this utility doesnt take any arguments
Usage()
Exit Sub
End If

m_szHostName = DNS.GetHostName()
m_LocalHost = DNS.GetHostByName(m_szHostName)

Console.WriteLine("Lokaler Anschluss: {0}, Remote: {1}", LocalPort, RemotePort)
Console.WriteLine("Initialisierung...")

Initialize()
Console.WriteLine("Listenerthread wird gestartet...")

Dim t As Thread
t = New Thread(AddressOf Listener)
t.Start()

Dim buffer() As Byte
Dim ASCII As Encoding = Encoding.ASCII

Dim m_ShuttingDown As Boolean = False

While (Not (m_ShuttingDown))
Dim s As String = Console.ReadLine()

If (s.Length = 0) Then
'continue()
End If

If (String.Compare(s, 0, "@", 0, 1) = 0) Then
m_Done = True
' send a terminator to ourselves,
' so that the receiving thread can shut down
s = m_szHostName & ":@"
m_ShuttingDown = True
Else
s = m_szHostName + ":" & s
End If

ReDim buffer(s.Length + 1)

' send data to remote peer

Dim len As Integer = ASCII.GetBytes(s.ToCharArray(), 0, s.Length, buffer, 0)
Dim ecode As Integer = m_Client.Send(buffer, len, m_RemoteEP)

If (ecode <= 0) Then Console.WriteLine("Fehler beim Senden: " & ecode)
End While

t.Abort()
t.Join()
Console.WriteLine("Verbindung wird geschlossen...")
Terminate()
End Sub 'Main


Public Shared Sub Terminate()
m_Client.DropMulticastGroup(m_GroupAddress)
End Sub

Public Shared Sub Initialize()
' instantiate UDPCLient
m_Client = New UDPClient(LocalPort)

' Create an object for Multicast Group
m_GroupAddress = IPAddress.Parse("224.0.0.1")

' Join Group
Try
m_Client.JoinMulticastGroup(m_GroupAddress, 100)
Catch Exc As Exception
Console.WriteLine("Multicastgruppe konnte nicht verknpft werden")
End Try

' Create Endpoint for peer
m_RemoteEP = New IPEndPoint(m_GroupAddress, RemotePort)

End Sub

Public Shared Sub Listener()
' The listener waits for data to come
' and buffers it.

Try
Thread.Sleep(2000) ' make sure client2 is receiving
Dim ASCII As Encoding = Encoding.ASCII

While (Not m_Done)
Dim endpoint As IPEndPoint
Dim data() As Byte = m_Client.Receive((endpoint))

Dim strData As String = ASCII.GetString(data)

If strData.IndexOf(":@") > 0 Then

' we received a termination indication
' now we have to decide if it is from
' our main thread shutting down, or
' from someone else

Dim separators() As Char = {CChar(":")}
Dim vars() As String = strData.Split(separators)

If (vars(0) = m_szHostName) Then
' this is from ourselves, therefore we end now
Console.WriteLine("Listenerthread wird beendet...")

' this should have been done by main thread, but we
' do it again for safety
m_Done = True
Else
' this is from someone else
Console.WriteLine("{0} hat das Gesprch verlassen", vars(0))
End If
Else
' this is normal data received from others
' as well as ourselves
' check to see if it is from ourselves before
' we print
If (strData.IndexOf(":") > 0) Then
Dim separators() As Char = {CChar(":")}
Dim vars() As String = strData.Split(separators)

If (vars(0) <> m_szHostName) Then
Console.WriteLine(strData)
End If
End If
End If
End While
Catch
console.WriteLine(Environment.StackTrace)
Exit Sub
End Try
Console.WriteLine("Listenerthread beendet...")
End Sub

End Class


Hab sowas auf MSDN gefunden.....sieht aber eher nach nem DOS-Chat aus oder?
Kann leider noch nicht soviel mit dem src-code anfangen!

merci
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TCP IP CHAT1.178yellyjones07.11.02 12:58
Re: TCP IP CHAT719Vampire66607.11.02 13:47
Re: TCP IP CHAT746yellyjones07.11.02 13:55
Re: TCP IP CHAT754Vampire66607.11.02 14:11
Re: TCP IP CHAT753yellyjones07.11.02 14:32
Re: TCP IP CHAT776Vampire66607.11.02 14:50
Re: TCP IP CHAT728yellyjones07.11.02 14:58
Re: TCP IP CHAT923yellyjones07.11.02 14:35
Re: TCP IP CHAT792Vampire66607.11.02 15:12
Re: TCP IP CHAT910yellyjones07.11.02 16:38

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel