Stworzenie amatorskiego Google Docs – od czego zacząć?

0

Cześć, zamierzam zrobić ubiogego google docs, taki notatnik online w którym wiele osób będzie mogło pisać na raz.
Serwer chciałbym zrobić w C na niskim poziomie, tzn. bawić się w sockety. Klienta webowego zrobię w Javie. Ktoś ma jakieś wskazówki od czego zacząć. Komunikację uważam że zrobić najlepiej za pomocą protokołu TCP z algorytmem Nagla, ale jak zrobić taki serwer który będzie komunikować się z moim klientem to nie za bardzo wiem. Wiedzę teoretyczną mam.

0
Worldmaster napisał(a):

Cześć, zamierzam zrobić ubiogego google docs, taki notatnik online w którym wiele osób będzie mogło pisać na raz.
Serwer chciałbym zrobić w C na niskim poziomie, tzn. bawić się w sockety. Klienta webowego zrobię w Javie. Ktoś ma jakieś wskazówki od czego zacząć. Komunikację uważam że zrobić najlepiej za pomocą protokołu TCP z algorytmem Nagla,

Ale algorytm Nagle'a chesz sam implementować? Bo to chyba jest dziś po prostu standard działania systemów operacyjnych...

ale jak zrobić taki serwer który będzie komunikować się z moim klientem to nie za bardzo wiem. Wiedzę teoretyczną mam.

W jakim sensie nie wiesz jak zrobić? Wyżej piszesz, że gniazda, no to OK, potem, że wiedzę teoretyczną masz... Więc po prostu -- gniazdami robisz taką komunikację i tyle. Chyba, że chodzi Ci o coś innego... Twój wewnętrzny protokół przesyłania danych? Czy jakieś kwestie wzajemnego wykluczania na odległość/synchronizacji/mergingu?

3

Moim zdaniem trochę bez sensu dobrałeś technologie. Ja bym tu jednak użył websocketów+js na froncie + jakaś java czy python w backendzie. Będzie 100 razy wygodniejsze niż klepanie tego gołymi socketami i jeszcze w C.
A z tym TCP to trochę WTF bo przecież ty nie chcesz chyba pisać własnego stosu TCP/IP ani sterownika karty sieciowej, więc jesteś "nad" tą warstwą. Więc coś słabo z tą wiedzą teoretyczną jednak... Równie dobrze mogłeś napisać Komunikację uważam że zrobić najlepiej za pomocą kabla światłowodowego, albo Komunikację uważam że zrobić najlepiej za pomocą routerów, miałoby to tyle samo sensu.

0

Wiem, ale robię ten projekt na studia... wymogiem mam używanie języka C i socketów do serwera. Tylko jeszcze w praktyce nigdy tego nie robiłem, dlatego pytam o jakieś wskazówki dotyczące tego.
Ogólnie znalazłem coś takiego i wydaje mi się że muszę zrobić podobnie: https://github.com/eaglx/Editor-for-collaboration/blob/master/server/main.cpp

0

Jeśli coś pomoże:
http://informatyka.umcs.lublin.pl/files/skrypty2012/bylina_programowanie_aplikacji_sieciowych.pdf
-- starawe, ale sockety w C się nie zmieniły... :)

1

Ale musisz tego googledoca robić? Czy po prostu taki temat sobie wymyśliłeś? Bo sockety i C nie są złe, ale słabo sie to nadaje do tego co chcesz zrobić po prostu. Bo musiałbyś tu jakieś cuda na kiju robić żeby jakis UI do tego podpiąć jeśli to ma być webowe. Jakby to miała być aplikacja desktopowa to jeszcze pół biedy, mógłbyś faktycznie klientem w javie połączyć się z serwerem w C gołymi socketami. Ale z javascriptu tak nie zrobisz.

0

Ja dodam, że algorytm Nagla wymaga dostępu do tak niskiej warstwy sieciowej, że raczej nie jest realizowany w warstwie aplikacji.
Z tego co zrozumiałem ten algorytm musi być implementowany przez tą warstwę, która dostarcza funkcjonalność socket-a TCP - czyli system.

0

Przecież Nagle jest dostępny out-of-the-box i domyślnie włączony na Linuksach i Windowsach. Prędzej byś chciał go chyba wyłączyć żeby zmniejszyć latency.

0

Dzięki wielkie za Waszą pomoc :) Trochę się zmartwiłem że zrobienie UI zarówno webowego jak i desktopowego jest trudne :( Czyli rozumiem że nie da się tego zrobić mając jeden serwer w C? żeby mieć aplikację webową i desktopową

2

Wszystko "się da", pytanie tylko jakim nakładem pracy. Komunikowanie javascriptu z C poprzez gołe sockety to jakiś ciężki hardkor. Stosujesz klasyczne podejście kiedy masz młotek to nagle wszystko wygląda jak gwoździe ;) Jest wiele fajnych projektów które można zrobić w oparciu o gołe sockety, ale to co chcesz zrobić nie należy do tej kategorii.

0

Mam na to 2.5 tygodnia :( czy to oznacza że jestem w czarnej ...?

0

Tak, chyba że zrezygnujesz z tego webowego GUI i zrobisz sobie jakieś desktopowe. Wtedy to jakoś pójdzie.

0

A w jakich technologiach powinienem to robić, bawiąc się "gołymi socketami" , żeby było najlepiej?

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