fpc chat

Alle Fragen zur Netzwerkkommunikation
Antworten
kekx
Beiträge: 1
Registriert: Di 7. Jun 2016, 14:17

fpc chat

Beitrag von kekx »

Hi Leute, suche schon seit Tagen nach einer Lösung für mein (*spaßes halber*) gebautes Chat-Programm.
Es speichert den gesamten Chatverlauf einfach in ein txt-file (keine User, sessions usw.).
Ziemlich einfach gebaut und funktioniert im lokalen Netzwerk auch ganz zufriedenstellend ;)

Nun wollt ich hier nach Anregungen/Ideen fragen, wie ich das ganze (wieder möglichst einfach) über das Web laufen lassen kann?

Dachte da an sowas ähnlich einfaches wie

Code: Alles auswählen

 path := 'http://<ip>/text.txt' ; 
:lol: (was aber nach meinen Recherchen anscheinend nicht so leicht funktioniert :mrgreen: )
Danach kam ich auf die Idee ev. GitHub o.Ä. für mein 'text.txt' zu missbrauchen, fand aber nirgends etwas wie man dort per fpc files schreiben kann.? :roll:

Am liebsten wäre mir natürlich wenn das über Port 80 laufen würde... bin aber mit den ganzen tcp socket dingen nicht unbedingt gut vertraut :cry:


Code: Alles auswählen

Program chat;
(*$I-*)
USES sysutils, crt;
 
VAR
   fIn, fOut: Text;
   b,text,path : string;
   n: INTEGER;
   i: Longint;
 
PROCEDURE writeout;
 
BEGIN
path := '\\server1\d$\chat\text.txt';
i := 0;
b := '';
   While true DO BEGIN
      REPEAT
      IF i <> FileAge(path) THEN BEGIN
         clrscr;
         i := FileAge(path);
         Assign(fIn, path);
         Reset(fIn);
         CursorBig;
         WHILE NOT EOF(fIn) DO BEGIN
            Readln(fIn, b);
            FOR n := 0 TO high(b) DO BEGIN
               b[n] := Chr(Ord(b[n])-6);
            END;
            writeln(b);
         END;
         Close(fIn);
      END;
      UNTIL KeyPressed;
      Readln(text);
      Assign(fOut,path);
      Append(fout);
      text := TimeToStr(Time)+': '+text;
      For n := 0 to high(text) DO BEGIN
         text[n] := Chr(Ord(text[n])+6) //Textfile unleserlich machen ;)
      END;
      Writeln(fout,text);
      Close(fOut);
   END;
END;
 
BEGIN
writeout;
readln();
END.
 

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: fpc chat

Beitrag von theo »

Du kannst die Datei z.B. mit FTP auf deinen Server übertragen.

Z.B. mit ftpsend von Synapse: http://synapse.ararat.cz/doc/help/ftpsend.html

http://synapse.ararat.cz/doku.php

Requion
Beiträge: 106
Registriert: Mi 3. Feb 2016, 09:39
OS, Lazarus, FPC: Linux(Arch Linux(+ARM)/Minibian) (L 1.6.0 FPC 3.0.0)
CPU-Target: 32/64Bit,ARM(RPi)
Wohnort: nahe Grimma

Re: fpc chat

Beitrag von Requion »

Also über Port 80 wirds wohl sehr schwierig. Das ist der Standart http Port.

Da wäre die Frage wie das Chatprogramm dann läuft. Dem bisherigen Text zufolge wohl P2P (das sich die Clients direkt miteinander verbinden). Dann stellt sich mir in dem Fall die Frage wie und wo du den Chatlog haben willst und für was er benutzt wird.
Was spricht dagegen den Log auf dem Rechner zu speichern auf dem der Client läuft?
Mfg Requion

Das beste an Standards ist, dass es so viele davon gibt.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: fpc chat

Beitrag von m.fuchs »

Requion hat geschrieben:Also über Port 80 wirds wohl sehr schwierig. Das ist der Standard http Port.

Und warum macht es das sehr schwierig?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

jwdietrich
Beiträge: 167
Registriert: Mo 20. Okt 2008, 20:50
OS, Lazarus, FPC: macOS 10.4-13.4, Windows 2000-11, Raspbian (L 2.2.6, FPC 3.2.2)
CPU-Target: PowerPC, Intel, ARM
Wohnort: Hattingen, NRW
Kontaktdaten:

Re: fpc chat

Beitrag von jwdietrich »

m.fuchs hat geschrieben:
Requion hat geschrieben:Also über Port 80 wirds wohl sehr schwierig. Das ist der Standard http Port.

Und warum macht es das sehr schwierig?

Port 80 ist deshalb schwierig, weil auf den meisten Servern bereits ein HTTP-Dämon läuft, der Port 80 belegt. In diesem Falle wird der Server das Programm mit einer Fehlmeldung abwürgen, und es wird dann besser sein, für das Chat-Programm einen anderen Port, z. B. 84 oder 1860, zu benutzen. Auf https://de.wikipedia.org/wiki/Liste_der ... rten_Ports gibt es eine Liste mit den standardisierten TCP/IP-Ports, die man, um Verwirrung und Fehler zu vermeiden, nach Möglichkeit nicht für andere Dienste umwidmen sollte.

Eine andere Möglichkeit wäre natürlich eine CGI-Lösung. Damit kommt der normale HTTP-Server des Systems zum Einsatz, der ein in Free Pascal geschriebenes CGI anbindet. Dann ist natürlich auch Port 80 möglich, weil die Verbindung über das Netz ja über den Standard-Server hergestellt wird.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: fpc chat

Beitrag von m.fuchs »

jwdietrich hat geschrieben:
m.fuchs hat geschrieben:
Requion hat geschrieben:Also über Port 80 wirds wohl sehr schwierig. Das ist der Standard http Port.

Und warum macht es das sehr schwierig?

Port 80 ist deshalb schwierig, weil auf den meisten Servern bereits ein HTTP-Dämon läuft, der Port 80 belegt.

Hm, es gibt auch genug Server die kein HTTP anbieten. Aber das ist gar nicht der Punkt. Die Beschreibung des OP klingt eher danach, dass er zwei Rechner über das Web miteinander Daten austauschen lassen möchte. Lokal wird er vermutlich keinen Webserver laufen lassen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Requion
Beiträge: 106
Registriert: Mi 3. Feb 2016, 09:39
OS, Lazarus, FPC: Linux(Arch Linux(+ARM)/Minibian) (L 1.6.0 FPC 3.0.0)
CPU-Target: 32/64Bit,ARM(RPi)
Wohnort: nahe Grimma

Re: fpc chat

Beitrag von Requion »

Passend das ich das Thema grad (mal wieder) in der Berufsschule hatte.

kekx hat geschrieben:bin aber mit den ganzen tcp socket dingen nicht unbedingt gut vertraut

Dann sollte die Nutzung reservierter Ports meiner Meinung nach vermieden werden.
Wenn es jetzt zu Fehlern bei der Datenübertragung kommt weil irgendwo was dazwischen funkt könnte das ganze (vorallem für Anfänger) schnell schwierig werden.

Ich sag ja nicht das Port 80 keine Option wäre. Nur sollte sich dann vorher das notwendige Wissen zu dem Thema erarbeitet werden.

Ich für mich würde für mein eigenes Chatprogramm (oder jedes andere Netzwerkprogramm) auch einen eigenen unreservierten Port nehmen. Außer ich nutze bereits vorhandene Protokolle, z.B. für einen eigenen IRC Client/Server würde ich mich an die Regeln des IRC Protokolls halten und die entsprechenden Ports verwenden.
Mfg Requion

Das beste an Standards ist, dass es so viele davon gibt.

Antworten