 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
Verfasst am: 14.03.2012, 13:10 Titel: Mit Server 2 Clienten ansprechen..? |
|
|
Hallo, ich habe diesen Server unten laufen.
Ich kann 2 Clienten damit aufnehmen.
Der Server meldet:
...mit 2 verbunden
...mit 3 verbunden
aber wie kann ich Daten zu 2 und 3 Senden?
Unten in der Do/Loop ist ja nur dieser Befehl:
myServer.senden("123456789")
und der Sendet immmer zu den zuletzt eingeklinkten Clienten.
Wie kann ich jetzt in der Schleife "2" und "3" ansprechen.
Danke.
GRuss
Code: |
#Include Once "TSNE_V3.bi"
Dim Shared As Integer partnerID
Type connectionType
As UInteger G_Server, G_Client
As Integer isServer
As String IP
Declare Constructor(Typ As String)
Declare Destructor
Declare Sub hosten
Declare Sub connecten
Declare Sub beenden
Declare Sub senden(Message As String)
End Type
'Subs für TSNE-Kommunikation
Declare Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
Declare Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
Declare Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
Declare Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
Declare Sub TSNE_NewConnectionCanceled(ByVal V_TSNEID as UInteger, ByVal V_IPA as String)
Constructor connectionType(Typ As String)
If Typ = "Server" Then
isServer = 1
hosten
ElseIf Typ = "Client" Then
IP = "127.0.0.1"
connecten
Else
IP = Typ
connecten
EndIf
End Constructor
Destructor connectionType
beenden
End Destructor
Sub connectionType.beenden
If isServer Then
TSNE_Disconnect(G_Server) 'Server beenden
TSNE_WaitClose(G_Server) 'Warten bis Server beendet ist
Else
TSNE_Disconnect(G_Client) 'Client beenden
TSNE_WaitClose(G_Client) 'Warten bis Client beendet ist
EndIf
End Sub
Sub connectionType.hosten
Dim BV As Integer
BV = TSNE_Create_Server(G_Server, 1435, 1, @TSNE_NewConnection, @TSNE_NewConnectionCanceled) 'Server erstellen
If BV = TSNE_Const_NoError Then
Print "Server bereit"
Else
Print "Fehler: " & BV
EndIf
End Sub
Sub connectionType.connecten
Dim BV As Integer
BV = TSNE_Create_Client(G_Client, IP, 9000, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData) 'Client erstellen
If BV = TSNE_Const_NoError Then
Print "Suche Server"
Else
Print "Fehler: " & BV
EndIf
End Sub
Sub connectionType.senden(Message As String)
TSNE_Data_Send(partnerID, Message)
End Sub
Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
'Handling, wenn disconnected wird
Print V_TSNEID & " wurde disconnectet"
End Sub
Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
'neue Verbindung wurde aufgebaut
Print "Nun mit " & V_TSNEID & " verbunden"
partnerID = V_TSNEID
End Sub
Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
'Wenn versucht wird, eine neue Verbindung herzustellen
'Nur wichtig für den Server
Print "Ein Client versucht zu verbinden"
Dim XNewTSNEID as UInteger
Dim XReturnIPA as String
'Akzeptieren der Verbindung
TSNE_Create_Accept(V_RequestID, XNewTSNEID, XReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData)
End Sub
Sub TSNE_NewConnectionCanceled(ByVal V_TSNEID as UInteger, ByVal V_IPA as String)
'Verhalten, wenn abgelehnt wird
Print "Verbindung wurde abgelehnt"
End Sub
Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
'Hier kommen die Daten an.
'
'V_Data enthält dabei die Daten
'Die ID zeigt, woher die Daten kommen
'Bei der Verarbeitung ist zu beachten, dass wenn
'schnell hintereinander Daten eingehen und diese
'Sub sie nicht schnell genug verarbeiten kann,
'gehen die Daten verloren
Print V_Data & " ::kommt von:: " & V_TSNEID
End Sub
Dim As connectionType myServer = "Server"
Do
Sleep 300, 1
myServer.senden("123456789")
Loop Until InKey = Chr(27)
myServer.beenden
|
|
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 14.03.2012, 18:11 Titel: |
|
|
Der Code sollte einen sehr einfachen Verbindungsaufbau ermöglichen, für Leute, die keine Ahnung von Netzwerkprogrammierung haben. Hier scheint mir aber auch das nötige Wissen um die allgemeine Programmierung zu fehlen.
'myServer.senden("123456789")' - das ist kein Befehl, sondern ein Funktionsaufruf. Die Funktion ruft selbst eine andere Funktion auf: 'TSNE_Data_Send(partnerID, Message)'.
Letztlich musst du das anpassen, am besten aus partnerID ein Array machen. Jemand, der ein Netzwerkprogramm schreiben will, sollte diese Aufgabe hinkriegen, weswegen ich hier auch keine Codes zur Lösung posten werde. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|