| |

VB.NET - FortgeschritteneRe: 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 |  |
 | 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 |
  |
|
Neu! sevCommand 4.0 
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|