Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 11.01.2013, 21:33 Titel: |
|
|
PERFEKT erkannt!!!
Nicht vergessen, das "Print" auch eien Thread-unsichere operation ist. Dies muss ebenfalls per mutex gesichert werden!
du solltest also das print entweder aus dem tsne... raus nehmen, oder alle grafik und io operationen per mutex absichern.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 11.01.2013, 21:41 Titel: |
|
|
ehrlich? ich dachte ich muss noch was mit Create machen.
Also wenn ich das Create nicht brauch dann muss ich am Ende auch nicht auf das Destroy achten ? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 11.01.2013, 21:43 Titel: |
|
|
aso ... natürlich, du musst zuerst natürlich ein Mutex erzeugen, bevor du es nutzen kannst.
Code: |
Dim MyMutex as Any Ptr = MutexCreate()
|
danach kannst du das erzeugte mutex nutzen.
Code: |
MutexLock(MyMutex)
'hier der von MyMutex zu schützende code teil
MutexUnLock(MyMutex)
|
vor dem Ende des Programmes das Mutex wieder "zerstören"
Code: |
MutexDestroy(MyMutex)
End 0
|
Ich hatte jetz tnur auf die komponenten geachtet, welche du schützen wolltest. Und nicht, auf die art, wie du die mutex komponenten einsetzt. Sry!
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 20.01.2013, 16:07 Titel: |
|
|
Super also im Heimnetz läuft mein kleines Projejekt ganz gut. Nun wollt ich nochmal fragen wie es aussieht mit externen Verbindungen z.B. zwischen zwei Freunden. Wie ich schon gelesen hab müsste ich dafür meine Externe IP Adresse als Verbindung eingeben... allerdings bekomme ich z.b. unter wieistmeineIP.de hier zu Hause auf jedem rechner die selbe, nämlich die die im Router steht.. mit dieser wird es wohl nicht gehen oder?
Also wie kann ich über Inet eine Verbindung aufbauen? |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 957 Wohnort: Austria
|
Verfasst am: 20.01.2013, 16:41 Titel: |
|
|
Ganz klar, weil dir bei einem normalen Internetzugang der ISP nur eine einzige Adresse dynamisch beim Einwählen zuweist. Du hast also nur ein Adresse und diese wird sich jedes mal neu Einwählen ändern.
Wenn du dich jetzt fragst, wie du trotzdem mit mehreren Rechnern auf Internet zugreifen kannst erkundige dich mal über NAT/PAT (bzw. NAPT) - das macht dein Modem/Router. Vereinfacht gesagt geht es darum Datenpakete zwischen der einen externen Adresse und den internen Adressen richtig zuzuordnen und umzuleiten.
Wenn du von außen auf deinen Rechner zugreifen willst, musst du also erstens dafür sorgen, dass dein gegenüber deine öffentliche IP kennt (die du z.B. eben auf http://www.yougetsignal.com/ ermitteln kannst). Weiters müssen eingehende Verbindungen an den richtigen Rechner weitergeleitet werden. Erkundige dich nach "Port-Forwarding" - am Modem/Router kannst du das dann einstellen und auf der vorhin genannten Website auch überprüfen. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 20.01.2013, 18:17 Titel: |
|
|
hmm ok also wenn ich nichts am router einstelle, werden dann die Informationen die jemand via tsne an meine Router IP versendet an alle meine PCs weitergeleitet? Und meine Programme mit tsne müssen dann auswerten ob die daten für sich bestimmt sind?
Oder muss ich den Port den ich in tsne nutze unbedingt im Router eintragen? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 20.01.2013, 19:06 Titel: |
|
|
prinzipiel wird alles was von außen kommt, abgeblockt (sicherheitskriterium).
Zur technischen sache:
Wenn du eine anfrage ins internet sendest, dann läuft diese zu deinem router (egal welcher computer von innen). Dein Router weis jetzt also, was du ins internet schickst, und wer diese frage gestellt hat, und wohin die frage gehen soll. der router sendet dich nun entsprechend weiter.
da er weis, wohin das geht, und von wehm es kam, kann er antworten, die aus dem internet kommen entsprechend zum anfragendem rechner zurück schicken.
von ausen eingehende anfragen sind da etwas unbekanntest für den router. er weis nur, von wehm und was, aber nicht wohin er das schicken soll.
daher kann man sogenannte virtuelle server oder portforwardings einrichten.
damit teilt man dem router mit, das bestimmte anfragen (egal von wehm sie kommen) an ein bestimmtes ziel geschickt werden sollen.
z.B. alle anfragen an 1234 sollen an den rechner xyz im lokalem netz geschickt werden.
und genau das musst du nun machen.
du musst einen computer in deinem heimnetz bestimmen, der diese anfrage entgegen nehmen wird. sowie den port, der verwendet werden soll.
die WAN IP kanst du mit TSNE (siehe projektseite) auch mithilfe einer kleinen funktion ermitteln (beispiel auf der projektseite). alternativ via TSNEX und der GETWANIPA funktion direkt, ohne grossen aufwand. Hier wird dyndns als abfragende gegenstelle genutzt, um die ip zu ermitteln.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 20.01.2013, 19:23 Titel: |
|
|
das ist natürlich viel zu kompliziert, denn erstens müsste ich jedem meiner freunde oder familie erklären wie sie ihren Router einstellen müssen und zweitens müsste man jedesmal dem anderen mitteilen wie die aktuelle IP lautet ausser das serverprog läuft auf nem richtigen server.
Trotzdem ersteinmal danke
ich werd nachher mein bisherigen Code mal irgendwie uploaden und würde mich freuen wenn ihr dann evtl verbesserungsvorschläge habt. auch was den schreibstil angeht. ich geb mir zwar schon mühe aber so sauber wie bei einigen von euch ist er lange nicht. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 20.01.2013, 19:57 Titel: |
|
|
Schau dir mal hole-punching techniques an. Meistens benötigt man trotzdem einen richtigen Server, der als Hilfsstelle zum Lochstanzen gebraucht wird, wenn man sich geschickt anstellt, kann man aber auch in der Infrastruktur vorhandene Dienste dazu benutzen… |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 21.01.2013, 00:17 Titel: |
|
|
So hab mein kleines Werk nun hochgeladen. Wie gesagt, es ist noch lang nicht fertig (geht aber) und ich würde mich über jede Hilfe bzw jeden besserungs Vorschlag freuen.
Noch kurze Info dazu - die EXE versucht sich als Client schlägt das fehl wird ein Server mit Client erzeugt.
Hat man eine Nachricht erhalten kann man sie mit normal draufklicken verwerfen oder mit Klick auf Absender beantworten.
postmail |
|
Nach oben |
|
 |
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 19.02.2013, 21:07 Titel: |
|
|
Mein TSNE Server hat manchmal ERROR -12 und -18 und hängt sich dann auf.
Laut Fehlerbeschreibung kann er nicht an die Clients senden.
Wie kann ich besagte Clients dann einfach rausschmeissen, dass es weitegehen kann? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 19.02.2013, 21:13 Titel: |
|
|
Diese fehler tretten meist dann auf, wenn du versuchst Daten an eine Verbindung zu senden welche nicht mehr existiert, bzw. disconnectet wurde.
Sprich, diese verbindung ist bereits nicht mehr existent. du brauchst sie also nicht "entfernen".
was jedoch "entfernt" werden muss, ist die TSNEID, welche du vermutlich noch in deiner Liste der Clienten stehen hast, aber nicht mehr existiert.
Diese ID löscht man in der regel im Callback TSNE_Disconnected(ByVal V_TSNEID as UInteger) heraus.
Siehe hierfür folgendes Beispiel: http://www.freebasic-portal.de/porticula/test-serverbas-740.html
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 19.02.2013, 23:17 Titel: |
|
|
Genau so ist es. Der Server bekommt eine Nachricht vom ClientX und gibt daraufhin eine Antwort. Nur hat sich ClientX schon verabschiedet, ist eingefroren oder hat andere Macken, er kann auf jedenfall keine Daten mehr empfangen.
Der Server friert einfach ein und nix geht mehr.
Dein Beispiel ist für UDP und nicht für TCP.
An welcher Stelle kann ich nun dieses TSNE_Disconnected(ByVal V_TSNEID as UInteger) einfügen? Am Besten wäre es ja in TSNE_Data_Send, aber wo da? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
|
Nach oben |
|
 |
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 17.03.2013, 19:55 Titel: |
|
|
Wie kann ich einen TSNE Server auf UDP umstellen? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
|
Nach oben |
|
 |
|