Netzwerk ohne Server

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Netzwerk ohne Server

Beitrag von Xaby »

Hallo, mein Name ist Folker.
Ich programmiere schon seit dem ich einen KC85 mit 9 Jahren in die Hand bekommen habe. BASIC.
Allerdings wars doch recht langsam. Später habe ich dann mit BasicA und GW-Basic auf einem IBM PS2 (80286 20Mhz), SW-Monitor weiter gemacht. Auf einem DX2 Q-Basic und dann bin ich vom Interpreter zum Compiler bei Pascal gewechselt.
Das war DOS. > Delphi, Java, C++, C# ist alles nicht so das richtige für mich gewesen. PureBasic ist das beste, was ich bis jetzt für das Geld bekommen habe.

Das war die Einführung. Nun folgt etwas Code:

LANCopy:

Code: Alles auswählen

Text$=GetClipboardText()
DateiName$="LANCopy.txt"
#Dat=3
CreateFile(#Dat,DateiName$)
WriteString(Text$)
CloseFile(#Dat)
LANPaste:

Code: Alles auswählen

#Dat=3
DateiName$="LANCopy.txt"
  If 0<>ReadFile(#Dat,DateiName$)
    Text$=ReadString()
    CloseFile(#Dat)
    SetClipboardText(Text$)
  EndIf
Wozu? > Ich arbeite oft an mehreren Rechnern gleichzeitig, um sie einzurichten oder Daten zu kopieren oder sie Fernzusteuen und Dinge auszuprobieren. (z.B.: RemoteAdmin)

Manchmal steht auch mein NoteBook auf dem Schreibtisch und ich habe dort gerade eine WebSeite offen und möchte diese gern auf meinem Rechner/Monitor vormir sehen. ...

Instinktiv kopiere ich also die URL und gehe an die andere Tastatur und möchte es einfügen ...
Aber ist ja nicht in der Zwischenablage.

Ich habe mir für LANCopy und LANPaste zwei Icons gemacht und verknüpfungen, beide sind jetzt in der Taskleiste unweit von der Uhr, aber nicht im Tray.

> Aber wenn ich drei Rechner benutze und einen zwischendurch abschalte und der Rechner auf dem das freigegebene Verzeichnis für die LANCopy.txt sein müsste dadurch nicht existiert ...
Okay, nun kurz das Problem:

Ohne Dateifreigabe über TCP/IP geht es bestimmt, aber nicht mit dem Server/Client-Modell.

Wie kann man ein Dynamisches Netzwerk erschaffen, in dem des egal ist, ob der z.B. bei Half-Life: Host abschmiert oder nicht.
> Die anderen sollen weiterspielen können und wenn der ehemalige Server wieder einsteigen will, ist das auch kein Problem. Vielleicht sogar mit seinen alten Frags ...

Oder für solche Dinge wie bei mir.

>> Noch etwas Werbung in eigener Sache <<
FolkisA goes PureBasic [Das ist ein Spiel]
http://www.h-data.de/folkisa


Gruß, Folker.[/code]
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Als mit PureBasic eigenen befehlen ist nur das Server-Client model möglich ... mit TCP/IP kenn ich mich nicht aus, aber ich würd sagen das es auch hier nur mit Server-Client geht.

Aber um das ganze zu umgehen kannst du ja folgendes machen:

jeder PC erstellt einen Server und connected zu jedem anderen Server (per Client versteht sich)
wird nun auf einem PC was kopiert verschieckt dieser das zu allen anderen PCs
die anderen PCs schicken dann ein "erhalten" zurück
kommt nach X Sekunden (Timeout) kein "erhalten" zurück, ist der Server down (der PC vermutlich aus?) und somit wird dieser von der aktuellen Online-Server-Liste gestrichen

Das dürfte eigentlich so keine probleme bereiten :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Das könnte man machen, aber in meiner Überlegung entstehen dann aus 100 Verbindungen bei einem Server-Client-Modell > 100x100 Verbindungen und ob das so das beste ist.

Ich habe schon Probleme, überhaupt eine Liste im LAN von allen anwesenden zu bekommen, die nicht in der selben Arbeitsgruppe sind!
Wie siehts da aus, was mache ich falsch.

Wenn ich das hätte, könnte sich jeder bestimmt auf eine ganz einfache Weise einem anderen mitteilen.

Vielleicht geht es wie mit BNC im Ring. Da wurde doch eine Nachricht erst einmal durch die Leitung geschickt und jeder hat nachgesehen, ob sie für den eigenen Rechner bestimmt war ... schätze ich.

Eine Art KettenMail vielleicht mit allen beteiligten.

>> Ich hatte gerade beim Schreiben einen Blitzgedanken.
Wenn ich weiß, wer im Netz ist... Name, IP oder wie auch immer ...
und wir einfach sagen: Jeder, der dieses LANCopy nutzen will, muss einen Ordner besitzen den er als SCHREIB bezeichnet hat und auf den jeder uneingeschränkt zugreifen und schreiben kann, ...

Beispiel: Liste:
PAUL
HOST
XABY
SUBY
TIM

Die Ordner sind dann ja immer \\SUBY\SCHREIB\LANCopy.txt

Dann hat jeder eine eigene Datei und ist nicht mehr auf die anderen Angewiesen. ... Den Rest dazu kriege ich auch hin, ...

aber wie kriege ich diese LISTE?

Denn: Get_IP-Names_in_LAN.pb
aus dem CodeArchive zeigt nur Nutzer im gleichen Netz an.
Ich bin in HAUSNETZ und mein zweiter Rechner in WORKGROUP z.B.
Die finden sich nicht ...

Bitte Hilfe, vielleicht einen *.pb Zweizeiler, der mir eine Liste of Elements mit den Namen gibt.
Cool wäre natürlich auch, wenn das irgendwie auch auf UNIX läuft.
Aber dann wohl eher ohne Dateifreigabe ...

Gruß, Folker.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Eine Idee von Marc.
Es gibt eine Userlib von Sebastian 'PureFan' Lackner. Eine "UDP"-User Library.
Mit dieser kann man auch Broadcasten.
D.H.:
Alle Rechner starten einen Server auf dem gleich Port, und einen Clienten auf dem gleichen Port.
Wenn Rechner A einen Copy-Befehl macht sendet er:
"Last Data + *eigene IP*"

Und jeder Rechner der an ist, loggt das mit (z.B. "Last Data + IP des Rechners".)

Der Rechner, auf dem der Paste Befehl ausgeführt wird, sendet eine Anfrage an den "Copy-Rechner", woraufhin dieser dem "Paste-Rechner" die gewünschten Daten schickt.
So ist es Dynamisch.

Einiger Nachteil:
Wenn mehrer Leute gleichzeitig das Programm im gleichen netzwerk benutzen... Dann kann es schon mal vorkommen, dass ich einen falschen Text paste, weil du in der zwischenzeit meines Recherwechseks auf nem anderen Rechner den Copy Befeh ausgeführt hat.
Aber das lässt sich auch durch "Benutzerebenen" regeln.

Gr33tz
Der Marc :allright:

Achja: Tolle und einfache Idee die bestimmt hilfreich manchmal ist :)
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Okidokelie

Beitrag von Xaby »

Ich werds bei Gelegenheit mal veruschen, stecke zur Zeit eher voll in den Arbeiten zu FolkisA 2.5.
Ich habe mal zu den User-Libs eine Frage, wenn ich jetzt diese oder andere benutze, auch z.B. die vom JaPBEditor, wie sieht es dann mit den Lizensen aus.
Ich habe nählich gerade das Problem, dass ich glaube, dass die FMOD nur für Freeware Dinge ist und wie könnte ich eine 3D-Engine benutzen, die frei ist und gleichzeitig mir das Recht zur Komerzialisierung einräumt.

Das Thema schweift ab, aber das mit den Rechten ist etwas kompliziert und für schönes Programmieren lässtig.
Ich meine, man bekommt tolle User-Libs und alles läuft und dann muss man sich wenn das Programm Efolgreich ist und auch VErkaufsreife erreicht darum kümmern, dass man alles neuprogrammiert oder?

Ich müsste also gleich Lizensfreie Produkte nutzen, um später nicht diesen aufwand zu haben. ...
Bitte um Aufklärung.
Vielleicht eine Liste, welche Libs für Kommerziele Dinge benutzt werden dürfen und welche nur für FreewareProdukte sind, etc ...

Danke. Gruß, F.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Xaby: nahezu alle UserLibs auf PureArea.net sind auch für kommerzielle Anwendungen ok. Worauf Du ein besonderes Augenmerk legen solltest, sind sogenannte "Wrapper"-Libs, welche die einfache Einbindung/Verwendung von externen Dlls ermöglichen. Dazu gehört dan z.B. FMod.
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Liste gibts bisher nicht, aber z.B. folgende DLLs kosten bei kommerzieller
Nutzung Gebühren: FMOD.dll, Bass.dll, Bassmod.dll
Am besten immer die Lizenzbedingen der Hersteller studieren, bevor Du Dein
kommerzielles Projekt erstellst!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Keinen Kommentar zu meiner "Idee" für das Netzwerk?

Gr33tz
Der Marc
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Antworten