Najszybszy sposób na przesyłanie tekstu między użytkownikami.

0

Witam!

Zmagam się z problemem, na razie czysto teoretycznie jak w najszybszy sposób przesyłać tekst między użytkownikami.
Coś na zasadzie pracy grupowej nad jednym tekstem, jeden napisze linijkę tekstu i u dwóch pozostałych osób od razu wyświetli się to u nich w programie.
Zastanawiałem się nad trzymaniem pliku na ftp i użyciu httpget tylko podejrzewam, że będzie to dosyć wolne, wiadomo pliki tekstowe niby nie są bardzo duże, ale np takie odświeżanie i pobieranie co 10sek czy 5sek może być uciążliwe.

Jeśli chodzi o p2p nie wiem jak to nawet ugryźć.

Co Wy byście radzili?

0

jeśli w obrębie jednej maszyny to wystarczą komunikaty, jeśli na różnych maszynach to gniazda lub poszukać gotowych rozwiązań (hint do szukajki Remote Process Communication lub RPC).
No i niestety jeśli nie wiem jak to nawet ugryźć. to my nic nie poradzimy - trzeba się po prostu wziąć za naukę - teoria jak działa sieć a dopiero potem za pisanie programu

0

no i jeszcze masz do wyboru UDP i TCP,
jak chcesz np na jednym servie trzymać to zrób sobie kolejkowanie kto kiedy co wysłał (czas co do setnej) ;]
ale szczerze mówiąc to taki prosty czat na TCP by ci wystarczył to z tym FTP to musiał byś pobierać cały czas dane więc odpada.
może napisz czy masz maszynę która możesz ustawić jako server (otwarte porty dla internetu) jeżeli nie masz to zapomnij o płynności ;]
tylko odświeżanie co x sekund, jak już coś użycie PHP i SQL mogło by zmniejszyć ilość pobieranych danych jak byś takie konwersacje przeprowadzał przez 2-4h to tekst może mieć 100k+ i co <ort>w tedy</ort>?

1
proqix napisał(a)

no i jeszcze masz do wyboru UDP i TCP,
jak chcesz np na jednym servie trzymać to zrób sobie kolejkowanie kto kiedy co wysłał (czas co do setnej) ;]
ale szczerze mówiąc to taki prosty czat na TCP by ci wystarczył to z tym FTP to musiał byś pobierać cały czas dane więc odpada.
tylko odświeżanie co x sekund, jak już coś użycie PHP i SQL mogło by zmniejszyć ilość pobieranych danych jak byś takie konwersacje przeprowadzał przez 2-4h to tekst może mieć 100k+ i co <ort>w tedy</ort>?

UDP nie gwarantuje dotarcia pakietu.
czas co do setnej? a dlaczego nie do pięćdziesiątej albo miliardowej?
nie tworzy się coraz dłuższego pliku, tylko nieduże kolejne, żaden pehap czy eskuel.

a szybka komunikacja tylko i wyłącznie przez trwałe połączenie socketem.

0
proqix napisał(a)

no i jeszcze masz do wyboru UDP i TCP,
jak chcesz np na jednym servie trzymać to zrób sobie kolejkowanie kto kiedy co wysłał (czas co do setnej) ;]
ale szczerze mówiąc to taki prosty czat na TCP by ci wystarczył to z tym FTP to musiał byś pobierać cały czas dane więc odpada.
może napisz czy masz maszynę która możesz ustawić jako server (otwarte porty dla internetu) jeżeli nie masz to zapomnij o płynności ;]
tylko odświeżanie co x sekund, jak już coś użycie PHP i SQL mogło by zmniejszyć ilość pobieranych danych jak byś takie konwersacje przeprowadzał przez 2-4h to tekst może mieć 100k+ i co <ort>w tedy</ort>?

Tylko, że mi nie chodzi o czat. A prace nad dokumentem tekstowym jednym wspólnym przez kilka różnych osób rozlokowany w różnych miejscach.
Jeden zmienia np 10 linijke w tekście i aby każdemu tą linijke zmieniło.

0

@ŁF
UDP szybszy ale nie ma potwierdzenia odbioru i zgodności danych
TCP wolniejszy ale bezpieczniejszy i ma te różne pierdoły do sprawdzania poprawności danych
@Grzegorz Hubka
To tylko serwer na TCP który by robił backup'y bo np 2 osoby robią tą samą linijkę i zmiany zapisują ;] jednemu prace ujebie ;]
Ja bym to widział że każda linijka tekstu to osobny rekord w tablicy i każdy wysyła do serwera swoje zmiany (z indexem linii) a serwer wysyła reszcie tą zmienioną linijkę ;]
No i możliwość wglądu do wprowadzonych zmian. To by działało w miarę szybko co do "linijki" czyli indexowania u edytujących musisz coś wymyśleć bo nie może być to #10#13 tzn [Enter] bo się indexowanie na serwie nie będzie zgadzać.
I może jeszcze coś na marginesie pokazującego że tu ktoś co zmienił i jak się np kliknie to pokazuje wcześniejszy wpis czy coś ;]
Ale może ma ktoś lepszy pomysł ;]

0

no to przecież dostałeś już odpowiedź. Napisz chat a potem zrób tak, żeby zamiast pojawiać się zawsze na dole nowe wiadomości mogły się pojawiać gdziekolwiek włącznie z kasowaniem już istniejącego tekstu.
Chociaż ja i tak uważam, że takie coś nie ma sensu bo jak sobie dwóch userów zacznie w tym samym czasie tą samą linijkę zmieniać to będzie kupa i tyle. Lepiej było by wydzielić każdemu po kawałku pliku na którym mógłby pracować (+ ew. pokazywanie zmian innym na bieżąco) ale żeby nie było sytuacji, gdzie więcej niż jedna osoba może zmieniać tą samą treść

0

i tak jak mówię musisz mieć kompa jako serwer z windows albo linux w zależności na co cie stać ;] jeżeli chodzi o TCP (Mam na myśli zabawę TServerSocket & TClientSocket) oczywiście...
Albo bawić się PHP SQL i JavaScript i zrobić to przy pomocy przeglądarki na darmowym hostingu ale po temacie wątpię że ty to potrafisz bez urazy.

0
proqix napisał(a)

i tak jak mówię musisz mieć kompa jako serwer z windows albo linux w zależności na co cie stać ;] jeżeli chodzi o TCP (Mam na myśli zabawę TServerSocket & TClientSocket) oczywiście...

Nie może mieć *BSD albo np. Solarisa? Nie musi mieć nawet komputera, dla NetBSD wystarczy highendowy toster i dostęp do Internetu.

proqix napisał(a)

Albo bawić się PHP SQL i JavaScript i zrobić to przy pomocy przeglądarki na darmowym hostingu ale po temacie wątpię że ty to potrafisz bez urazy.

O ile PHP rozumiem to przyczyny mieszania JS za cholerę.

0

@pozwany
jesteś skończonym kretynem bo

  1. Linux i BSD i Solarisa mają oparcie o Unix więc większość kodu programu jest kompatybilna
  2. A niby jak ty sobie to wyobrażasz że będzie zmiany automatycznie aktualizować co za każdym razem będzie klikał na button Zapisz czy odświeżał F5 jak masz w FF i żeby miało to jakiś przystępny wygląd ?
    A może lepiej we Flashu będzie się bawił albo w Javie co?
  3. Nie wystarczy zgniłe jabłko 2 miedziane drut i dioda + internet (5kB/s) i ma wyjebanego kompa, na którym może host'ować co mu się żywnie podoba...
    Masz pojęcie co to Ajax ?
0
proqix napisał(a)

jesteś skończonym kretynem

Dziękuję młody panie :)

proqix napisał(a)
  1. Linux i BSD i Solarisa mają oparcie o Unix więc większość kodu programu jest kompatybilna

Windows ma certyfikat zgodności z POSIX, jest więc teoretycznie bardziej zgodny z rodziną UNIX niż Linux. Przypominam, że wątek jest w dziale poświęconym Delphi, tj. środowisku przeznaczonym dla systemu Windows.

proqix napisał(a)
  1. A niby jak ty sobie to wyobrażasz że będzie zmiany automatycznie aktualizować co za każdym razem będzie klikał na button Zapisz czy odświeżał F5 jak masz w FF i żeby miało to jakiś przystępny wygląd ?
    A może lepiej we Flashu będzie się bawił albo w Javie co?

Jestem kretynem bo nie wyobrażam sobie żeby chat w Delphi korzystał z JS?

proqix napisał(a)

Masz pojęcie co to Ajax ?

Jasne, tylko nadal nie mam pojęcia co to ma wspólnego z wątkiem, który dotyczy Pascala/Delphi. AJAX to technologia wykonywania requestów po HTTP, który jest dosyć ciężkim protokołem, bezstanowym. Ustanawianie nowego połączenia dla każdej operacji, przesyłanie masy nagłówków wymagających parsowania itd. na pewno będzie "najszybsze". Jeśli już HTTP to Comet, całkowite przeciwieństwo AJAXa, emulacja ciągłego streamowanego połączenia.

Kretyn dziękuje za uwagę:)

1

Ja widzę tu zastosowanie dla systemu kontroli wersji i tyle... po co 5 osób ma operować na 1 pliku nadpisywać sobie i kasować jego zawartość? Paranoja. A co jak ktoś zrobi ctrl+a i del kilka godzin pracy pójdzie w kibinimatyli? Wystarczy wydzielić klasy do osobnych modułów i już jest mniejsze prawdopodobieństwo że 2 osoby będą edytować ten sam plik (osobiście nie znam żadnego powodu dla którego kilka osób miało by pracować nad tym samym kawałkiem kodziwa) poza tym problemy jakie napotkasz po drodze właśnie są rozwiązane w systemach typu SVN

1 użytkowników online, w tym zalogowanych: 0, gości: 1