|
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 |
Wie findet Ihr dieses Projekt? |
Super |
|
70% |
[ 12 ] |
Gut |
|
29% |
[ 5 ] |
Mittelmässig |
|
0% |
[ 0 ] |
Schlecht (Warum?) |
|
0% |
[ 0 ] |
Scheisse (Warum?) |
|
0% |
[ 0 ] |
|
Stimmen insgesamt : 17 |
|
Autor |
Nachricht |
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 15.03.2010, 20:44 Titel: |
|
|
Mysteriös ... kannst du mal die FBTemp.bas irgend wo hoch laden?
MfG
TPM
[edit]:
Jojo hat Folgendes geschrieben: | Zitat: |
edit: es hat sich erledigt, ich hatte nicht die aktuelle TSNE_v3.bi ... |
|
Ups .. nicht gesehen .. thx
MfG _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Zuletzt bearbeitet von ThePuppetMaster am 15.03.2010, 21:18, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 15.03.2010, 21:12 Titel: |
|
|
Zitat: |
edit: es hat sich erledigt, ich hatte nicht die aktuelle TSNE_v3.bi ... |
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 13.03.2011, 00:47 Titel: |
|
|
Ich stelle gerade fest, dass man mit TSNEPlay_SendMSG offenbar nur Nachrichten mit mindestens 4 Zeichen Länge verschicken kann - und ich suche schon stundenlang, wo bei mir der Fehler liegt, dass meine Nachrichten nicht ankommen _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 13.03.2011, 12:51 Titel: |
|
|
Das Beispiel funktioniert, und auch sonst klappt das mit der Übertragung von Nachrichten, aber eben nur, wenn die Nachricht mindestens 4 Zeichen lang ist. Ich hatte zum Test
Code: | TSNEPlay_SendMSG 0, "bla"
TSNEPlay_SendMSG 0, "blubb" |
verwendet, und da kam die erste Nachricht nie an. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 13.03.2011, 13:13 Titel: |
|
|
ich kann das gerade nicht testen, da ich auf na anderen maschine unterwegs bin, aber ich glaube, ich habe das problem entdeckt.
es liegt an einer Zeile im TSNE_Play Quellcode.
Zeilennummer kann ich dir leider nicht nennen, da porticular diese nicht anzeigt.
aber, ich werde dir den teil beschreiben:
in der Funktion:
Code: | Sub TSNEPlay_INT_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String) |
den teil
Code: | Case TSNEPlay_INT_MSGT_MSG |
suchen
dort gibt es die Zeile
Code: | If Len(.V_Data) >= 20 Then |
diese muss von 20 auf 16 reduziert werden.
Dieser teil ist 2x in der sub vorhanden. In beiden Fällen diese Änderung vornehmen.
dann sollte es eigetnlich funktionieren.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
Verfasst am: 13.06.2011, 21:17 Titel: |
|
|
Hi
ich hab zum test versucht deine testplay mal auszuführen (das von der Portalseite) und ich schaffe es nicht ein übers Internet ein Netzwerk aufzubauen... habs mit versch. PW, Ports, etc. probiert... kein ergebniss
Firewall macht auch nichts
mfg. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 13.06.2011, 21:21 Titel: |
|
|
wenn du einen router zwischen computer (LAN) und internet (WAN) hast, musst du dort den entsprechenden Port für den computer freischalten, auf welchem der Server läuft (Virtueller server / port-forwarding / NAT / ...) sonnst kann der client keine verbindugn zum server herstellen.
ansonsten sollte es eigetnlcih funktionieren.
hast du ein programm mit dem "server" flag und das andere mit dem der ip-adresse via kommandozeile gestartet?
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
Löwe
Anmeldungsdatum: 20.06.2011 Beiträge: 10
|
Verfasst am: 20.06.2011, 15:43 Titel: |
|
|
hi
ich habe ein kleines problem
ich habe versucht eine Zahl als Nachricht zu verschicken
eigentlich ja keine große sache... es müsste ja eigentlich so funktionieren
TSNEPlay_SendMSG(0,Str(zahl1),1)
leider klappt das nicht so... wenn ich statt der zahl aber einen string nehme, funktionert es... |
|
Nach oben |
|
|
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 20.06.2011, 23:28 Titel: |
|
|
@Löwe ... also, das ist mehr als kurios! Denn, TSNE_Play hat eigentlich rein garnichts damit zu tun, wie du den Wert übergibst. Er nimmt generell nur eine Art von Datentyp entgegen. Und das ist String. Konvertierst du nun also eine Zahl in einen String, z.B. via Str(), dann wird dies für TSNE_Play genauso interpretiert wie ein String der so deklariert wurde.
Kannst du eventuell mal deinen Quellcode herauf laden, oder den entsprechenden abschnitt via PM schicken, wenn du ihn nicht veröffentlichen möchtest.
@Domso ... Auf der Seite ist leider nicht viel zu finden. Vorallem nicth genau darüber, wie der Test vontatten geht.
Ich habe den Test selbst fix gemacht. Und kann dir nur soviel sagen, das solch ein Test eigentlich nicht viel über dein System aussagt.
Wichtig ist mir zu wissen:
1. Hast du einen Router am laufen?
2. Hast du Port-Freigaben im Router eingerichtet oder NAT / Virtueller Server / ...?
Angaben vom Port-Scan die mit Offen angegeben sind, sind Ports, die du NICHT nutzen kannst! Ports, die als "gefiltert" markiert sind, deuten darauf hin, das (wenn du einen Router einsetzt) dieser Port nicht weiter geleitet wird (und EVENTUELL auf dem Rechner verwendet wird, oder nicht (kann man so nicht sagen)), oder aber (wenn du keinen router besitzt), der Port auf deinem Rechner frei verfügbar ist, und du in TSNE_Play nutzen kannst.
Da du jedoch probleme mit TSNE_Play und deren Standardport hast, gehe ich einfach mal davon aus, da du einen Router besitzt auf dem du KEINE Port-Freigabe für diesen Port eingerichtet hast.
Für diesen Fall kann ich dir empfehlen, das du dich auf dem Router einlogst, und dort einen "Portfreigabe" oder einen "Virtuellen Server" einrichtest.
Dort wirst du vermutlich einen Port angeben müssen. Dieser Port muss der selbe sein wie der welcher in TSNE_Play bzw. im Beispiel angegeben wurde.
Als nächstes muss eine IP-Adresse eines Computers im LAN (In deinem Netzwerk) eingegeben werden. Diese IP-Adresse sollte die sein, auf dem du das TSNE_Server Beispiel laufen hast (wenn du mehr als einen rechner für das TSNE_Play Beispiel nutzt).
Danach sollte der Zugriff funktionieren.
Man kann dies mit anderen Diensten vergleichen, wie z.B. EDonky, EMule, TS-Server, IRC-Server, DCC, HTTP-Server Freigaben, VNC, usw. ... all diese dienste brauchen regulär ebenfalls einen Port-Freigabe in einem Router. Sonst würden sie nicht oder nicht richtig funktionieren.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 22.06.2011, 02:03 Titel: |
|
|
22.06.2011
* Konstruktor und Destruktor wurden Modifiziert um bei Nutzung mit Shared-Variablen in Bezug auf OOP eine Fehlerhafte Startprozedur des Winsocks unter Windows zu beheben.
Wird ein TSNE in einem OOP Objekt genutzt welches TSNE per Type Construktor über eien Shared Variable läd, dann führt dies zu einem misslungenem Start des Winsocks unter Windows.
Durch Angabe (Danke an dkl für den patch) einer Startreihenfolge der TSNE-Internen Konstuktoren konnte dieses Problem behoben werden.
Da dieser Fehler nur in einem Besonderem Fall auftritt ist der Bug als "Nicht Kritisch" eingestuft. Ein Update von TSNE ist nicth zwinsgend für alle erforderlich, sondern die obrigen Kriterien nicht erfüllt werden.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
Löwe
Anmeldungsdatum: 20.06.2011 Beiträge: 10
|
Verfasst am: 29.06.2011, 20:29 Titel: |
|
|
Hi
das mit den string is ja logisch, deshalb hat mich es ja auch so verwundert, dass es nicht geht. Der quellcode ist leider etwas zu unüberschaubar, als dass er dir etwas nutzen würde. Aber eigentlich müsste es ja funktionieren.
Textnachrichten werden problemlos gesendet.
Allerdings empfängt das programm, das die Nachrichten mit den Zahlen verschickt, auch diese Nachricht (ist ja an alle), jedoch ein anderer Client empfängt nichts. Das passiert auch wenn ich Zahlen und texte verschicke, also:
TSNEPlay_SendMSG(0,"e5",1)
Allerdings dürfte das keine Rolle spielen...
btw.
in deiner testplay.bas schreibst du, dass um daten zu versenden, es sinnvoller ist die send-data funktion zu nutzten, statt der msg-funktion
Allerdings kann man in der msg-funktion der Nachricht einem typ zu ordnen.
in der data-funktion geht das nicht. Woher soll der Client wissen, was dass für nen Wert ist, das es gerade von dem Server als Data bekommen hat?
mit der msg-funktion wäre das doch leichter zu lösen?
oder gibts da irgendwelche Hilfsmittel in der data-funktion? |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 29.06.2011, 20:43 Titel: |
|
|
Du kannst natürlich immer das/die erste(n) Byte(s) der gesendeten Daten dafür reservieren, um den Typ der Nachricht festzulegen. Die Funktion TSNEPlay_SendMSG macht letztendlich auch nichts anderes. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 29.06.2011, 22:46 Titel: |
|
|
jop. wie nemored das schon geschrieben hat ist es im grunde das selbe.
Wenn man es nicht so eng sieht, ist die Move udn MSG funktion nur ein aufruf der data funktion, welche noch diverse parameter, wie z.B. den msg type, in die daten mit rein packt.
die data funktion habe ich eingebaut, damit man "irgend welche" daten, die man frei definierbar sind, übertragen kann.
Hiermit eröffnet sich die möglichkeit ein eigenes protokol zu entwerfen, falls einem die msg oder move funktion nicht ausreicht. oder aber, um daten zu verschicken, welche spezielle dinge ausführt, die nicht mit move oder msg zu realisieren sind.
Als beispiel für die funktion data könntest du verwenden:
Code: |
Dim TCommandByte as Byte
Dim TData as String
TCmmandByte = 1 'Move
TCommandByte = 2 'MSG
TCommandByte = 3 'Kill
TCommandByte = 4 'Create
'...
TData = "abcdef"
'...
TSNEPlay_SendData(0, Chr(TCommandByte) & TData)
|
Damit hast du einfach eine art kommando vor den daten platziert.
Dieses kannst du entsprechend in der Empfangsroutine einlesen und auswerten:
Code: |
Sub TSNEPlay_Data(ByVal V_FromPlayerID as UInteger, ByVal V_ToPlayerID as UInteger, ByRef V_Data as String)
If Len(V_Data) = 0 Then Exit Sub
Dim TCommandByte = V_Data[0]
Dim TData = Mid(V_Data, 2)
Select Case TCommandByte
Case 1: Print T_Data
Case 2: Print T_Data
Case 3: Print T_Data
Case 4: Print T_Data
End Select
End Sub
|
Damit hast du die möglichkeit für 255 unterschiedliche Kommandos geschaffen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
Löwe
Anmeldungsdatum: 20.06.2011 Beiträge: 10
|
Verfasst am: 01.07.2011, 16:01 Titel: |
|
|
hi
ok thx dann werde ich das so machen
jetzt weiß ich auch, warum ich keine tahlen senden konnte
irgendwie müssen die Zahlen 4 Stellen haben um gesendet zu werden
warum das so ist weiß ich aber auch nicht |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
|
Nach oben |
|
|
Löwe
Anmeldungsdatum: 20.06.2011 Beiträge: 10
|
Verfasst am: 01.07.2011, 17:48 Titel: |
|
|
eigentlich hatte ich das Abgeändert
ist wohl aber im Versionsdschungel untergegangen |
|
Nach oben |
|
|
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 04.07.2011, 15:52 Titel: |
|
|
Vorweg mal Danke an TPM.... TSNEplay finde ich wirklich einfach zu benutzen !
Ich habe das hier einfach mit Klartext gemacht.... dafür nehme ich halt die ersten 8 Zeichen der Message her.
Code: | Sub checkMessage(ByVal User As UInteger, ByVal Message As String)
Dim As String xText
Dim As Integer x
Select Case (Left(Message,8))
Case "Get_Time"
TSNEPlay_SendMSG(User, "Set_Time" & ":" & aktTime)
Case "Get_Teil"
xText = Mid(Message,9)
Do
If xtext = teilnehmerdb(x,0) Then
xText = "Set_Teil:" & teilnehmerDB(x,2) & " " & teilnehmerDB(x,1) & Chr(13) & Chr(10) & TeilnehmerDB(x,3) & " -- " & teilnehmerDB(x,9)
Exit Do
End If
x = x + 1
Loop Until teilnehmerdb(x,0) = ""
If Left(xText,1) <> "S" Then
xText = "Set_Teil:" & "Nummer nicht gefunden!"
End If
TSNEPlay_SendMSG(User, xText)
Case "In_Zeit1"
xText = Mid(Message,9)
IncomingZeit1(xText)
Case "In_Zeit2"
xText = Mid(Message,9)
IncomingZeit2(xText)
Case "In_Platz"
xText = Mid(Message,9)
Console (xtext)
IncomingPlatz(xText)
End Select
End Sub
Sub checkConnect(ByVal PlayerID As pList, What As String)
Select Case what
Case "Connect"
FF_ListBox_ReplaceString(HWND_frmclient_listClientsReal, PlayerID.pArt, (PlayerID.Pid & " : " & playerID.PNick),0)
FF_ListBox_InsertString(HWND_frmServer_listClients, -1, (PlayerID.Pid & " : " & PlayerID.PNick))
FF_Control_SetColor( HWND_frmMain_lblClient(PlayerID.pArt), 0 , &H00F090 )
Case "Disconnect"
FF_ListBox_ReplaceString(HWND_frmclient_listClientsReal, PlayerID.pArt, ("Disconnected : " & playerID.PNick),0)
FF_ListBox_InsertString(HWND_frmServer_listClients, -1, ("Disconnected : " & PlayerID.PNick))
FF_Control_SetColor( HWND_frmMain_lblClient(PlayerID.pArt), 0 , &HF0F0F0 )
End Select
End Sub
Sub TSNEPlay_ConnectionState(ByVal V_FromPlayerID As UInteger, ByVal V_State As TSNEPlay_State_Enum)
Console "[STATUS] PlayerID:" & V_FromPlayerID & " Status:" & TSNEPlay_Desc_GetStateCode(V_State)
End Sub
'--------------------------------------------------------------------------------------------------------------
Sub TSNEPlay_Player_Connected(ByVal V_PlayerID As UInteger, V_IPA As String, V_Nickname As String)
Console "[Connect->] PlayerID:" & V_PlayerID & " IPA:" & V_IPA & " Nickname:" & V_Nickname
With plNr(V_playerID)
.pID = V_playerID
.pArt = CInt(Left(V_Nickname,1))
.pNick = Mid(V_Nickname,3)
.lNr = -1
End With
checkConnect(plNr(V_playerID),"Connect")
End Sub
'--------------------------------------------------------------------------------------------------------------
Sub TSNEPlay_Player_Disconnected(ByVal V_PlayerID As UInteger)
Console ("[DisConnect->]PlayerID:" & V_PlayerID & " : " & plNr(V_PlayerID).pNick )
checkConnect(pLNr(V_PlayerID),"Disconnect")
End Sub
'--------------------------------------------------------------------------------------------------------------
Sub TSNEPlay_Message(ByVal V_FromPlayerID As UInteger, ByVal V_ToPlayerID As UInteger, ByVal V_Message As String, ByVal V_MessageType As TSNEPlay_MessageType_Enum)
Dim As String text = "[NACH] Von PlayerID:" & V_FromPlayerID & " Fuer PlayerID:" & V_ToPlayerID & " Type:"
Select Case V_MessageType
Case TSNEPlay_MSGType_Regular : text = text & "[Standa]"
Case TSNEPlay_MSGType_Private : text = text & "[Privat]"
Case TSNEPlay_MSGType_Notice : text = text & "[Notiz]"
Case TSNEPlay_MSGType_Hightlighted : text = text & "[Hervor]"
Case Else : text = text & "[UNKNOWN]"
End Select
text = text & " Nachricht:>" & V_Message & "<"
Console (text)
checkMessage(V_FromPlayerID, V_Message)
End Sub
|
zu der _Data Geschichte hätte ich aber jetzt auch noch eine Frage :
wenn ich das recht im TSNEplay gelesen habe darf der String 4k nicht überschreiten... Ist das so korrekt ?
Ich würde evt. noch hingehen wollen und komplette Ergebnislisten an einen Client senden wollen.
Wie könnte ich da vorgehen wenn ich das in einem Array stehen habe...
auf Anhieb fällt mir ein, das ich das gleich in HTML verpacke und den Client dass dann nur noch anzeigen lasse und als Blöcke schicke
oder eben die Ergebnisdatensätze auch jeweils einzeln an den Client sende.
Grüße |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 05.07.2011, 19:02 Titel: |
|
|
eien einfache variante wäre hier das ganze, wie du schon gesagt hast, in Blöcke zu zerlege.
Alternativ könntest du ein eine Methode anwenden, welche ich auch in TSNE_Play verwende um den "Stream" synchron und linear zu halten.
Du packst die daten in einen string, und schreibst an die ersten 4 byte einen Integerwert welcher die länge der folgenden daten repräsentiert.
auf der empfangsseite liest du zuerst die ersten 4 bytes aus, udn weist damit genau, wie viele daten daraufhin noch folgen.
Wenn ich etwas zeit hab, und mich von meinem urlaub, von dem ich gerade komme, etwas erholt habe, schreibe ich dir mal was zam.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
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.
|
|