Max1414 Napisano Czerwiec 25, 2007 Zgłoś Share Napisano Czerwiec 25, 2007 Witam! Chciałbym zrobić program do przesyłania plików P2P za pomocą socket'ów. Mam takie dwa pytania: - jak rozwiązać problem wysyłania do osób za NATem? Można by jakiś centralny server postawić, ale to odpada. - jak rozwiązać sprawę statusów? Jak je pobierać, czy ktoś jest dostępny? Co 1s sprawdzać czy da się do każdej osoby na liście połączyć? Ale to troche niewydajne? Znowu jakbym do bazy danych wysyłał statusy to w wypadku zerwania połączenia będzie, że dalej jest ktoś dostępny. Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Czerwiec 25, 2007 Zgłoś Share Napisano Czerwiec 25, 2007 1. Server, lub przez proxy lub przez PnP ale nie robilem nic w tych klimatach wiec nie pomoge. 2.robi sie to przez server. Uzytkownik loguje sie na server i co jakis czas wysyla 'keep alive' jak przestanie to wysylac to znaczy ze nie jest podlaczony. Ewentualnie jak wysle jakies polecenie typo exit to zmienia mu sie status. Polecam poczytac specyfikacje serverow irc tam jest to dobrze opisacne + jest gotowy protokol. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
TSr Napisano Czerwiec 25, 2007 Zgłoś Share Napisano Czerwiec 25, 2007 Można też przejrzeć kody źródłowe jakiegoś programu P2P np. aMule (http://www.amule.org/), ale do prostego projektu to chyba za dużo roboty bo program jest dość rozbudowany. Ubuntu.pl user #10593 Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 25, 2007 Autor Zgłoś Share Napisano Czerwiec 25, 2007 1. Server, lub przez proxy lub przez PnP ale nie robilem nic w tych klimatach wiec nie pomoge.2.robi sie to przez server. Uzytkownik loguje sie na server i co jakis czas wysyla 'keep alive' jak przestanie to wysylac to znaczy ze nie jest podlaczony. Ewentualnie jak wysle jakies polecenie typo exit to zmienia mu sie status. Polecam poczytac specyfikacje serverow irc tam jest to dobrze opisacne + jest gotowy protokol. No to odnosnie drugiego to znam to, ale chciałbym się obyć bez servera ;] no ale chyba nie da rady Będę musiał odrzucić statusy, ew. sprawdzanie na życzenie czy coś Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
filuu Napisano Czerwiec 25, 2007 Zgłoś Share Napisano Czerwiec 25, 2007 Można też wykorzystać sobie serwery jakiegos innego komunikatora. Ja często sobie pożyczam serwery od GG. ;] Lubię cytryny ! Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 26, 2007 Autor Zgłoś Share Napisano Czerwiec 26, 2007 Jak to filuu ? Bo to chyba trzeba napisać server i uruchomić gdzieś na stałe To jak niby uruchomić na serverze gg swój ServerSocket ? Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
filuu Napisano Czerwiec 26, 2007 Zgłoś Share Napisano Czerwiec 26, 2007 Po prostu sie na niego logujesz i przesyłasz we wiadomosciach wlasne dane http://ekg.chmurka.net/docs/protocol.html Tylko jak padnie serwer gg to automatycznie i "Twoj serwer" ;p Edit: Jak coś to mam też komponent: http://netzip.com.pl/~filush/GGLite/ Lubię cytryny ! Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 26, 2007 Autor Zgłoś Share Napisano Czerwiec 26, 2007 Jak ma mi pomóc wysyłanie wiadomości przez gg w statusach? Przecież wiadomości moge też przez sockety przesyłać. Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Czerwiec 26, 2007 Zgłoś Share Napisano Czerwiec 26, 2007 jesli nie chcesz serwera centralnego to zbuduj sobie siec rozproszona. przy starcie klient musi miec jeden punkt wejscia (inny komp). Laczy sie do niego i prosi o liste innych adresow, robi sobie cache i nawiazuje polaczenie z np 10 losowymi, przy czym informuje kazdego z nich o tym do jakich jest polaczony. jesli ktorys z wezlow zmieni swoj stan (status) informuje nody ktore sa z nim polaczone, a te nody broadcastoja do swoich polaczen itd, wiadomosc sie rozchodzi po calej sieci. Problematyczne moze byc synchronizowanie statusu sieci ale koncept wydaje sie dosyc ciekawy. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 26, 2007 Autor Zgłoś Share Napisano Czerwiec 26, 2007 Jeeeeeeezuuuu.... dość już mam tych socketów, one są nieobliczalne . Robie przerywanie wysyłania plików i już nerwicy dostaje... Jakakolwiek operacja na kliencie przy przerywaniu powoduje AV :/ , z innymi problemami sie uporałem try...except... Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Czerwiec 26, 2007 Zgłoś Share Napisano Czerwiec 26, 2007 Tylko nie stosuj czasem "konstrukcji": try // kod except end; Zawsze trzeba jakoś obsłużyć wyjątek (zalogować, cokolwiek...), a jak nie obsługujesz go to przekazuj dalej (raise). W przypadku błędów stracisz mnóstwo czasu na ich znalezienie, bo będziesz je maskował takim cudakiem. ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 26, 2007 Autor Zgłoś Share Napisano Czerwiec 26, 2007 Ehh... jakoś to okiełznałem, ale masakra jakieś błędy z kosmosu się robiły . np. Przy przerywaniu dawałem Client.Close Client.Free; i odrazu Access Violation :/ , musiałem zostawić same Client.Close, a czemu to już nie wiem -.- , może wy wiecie ? Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Czerwiec 26, 2007 Zgłoś Share Napisano Czerwiec 26, 2007 przed free daj if Clientnil then bo moze close juz zwalnia obiekt, sprawdz w helphi, przykladach, czy gdzies tam jeszcze. www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 26, 2007 Autor Zgłoś Share Napisano Czerwiec 26, 2007 nic z tego ;]... cały dzień dzisiaj spędziłem, żeby znaleźć takie połączenie tego wszystkie, żeby nie pojawiały się errory... no i udało się, ale i tak mnie to nie satysfakcjonuje, bo zdarza się, że jeszcze czasem wyskoczą... W ogóle pierwszy raz miałem do czynienia z takimi nielogicznymi błędami, po prostu masakra, aż nie wiem jak wam to opisać, heh Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Czerwiec 26, 2007 Zgłoś Share Napisano Czerwiec 26, 2007 Używasz D7 i masz włączoną optymalizację kodu w opcjach projektu? Jeśli tak -- wyłącz. Czasem są z tym niezłe jaja ;-) ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 26, 2007 Autor Zgłoś Share Napisano Czerwiec 26, 2007 Wyłączyłem teraz, ale nadal to samo , nie wiem co jest grane, może i ja gdzieś coś głupiego zrobiłem, ogólnie pisałem wszystko tak byle było, bo chciałem sprawdzić jak to będzie działać, dopiero później miałem zamiar ładnie kodzik przerobić... Tak czy siak, nie ma takiego burdelu, żeby to nie powinno działać. Może jutro pokaże kodzik... tylko musze troche opisać i pozmieniam komponenty na standardowe, żebyście mogli skompilować Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Czerwiec 26, 2007 Zgłoś Share Napisano Czerwiec 26, 2007 Niedawno pisałem obsługe sieci w directPlay i nawet fajnie sie w tym pisze, moze tego sprobojesz www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Czerwiec 27, 2007 Zgłoś Share Napisano Czerwiec 27, 2007 Nie wiem jakich komponentow/klas uzywasz, ale jesli masz cliejnta stawianego na formie jako komponent to nie wywoluj na nim free, robi to forma, moze dlatego miales AV. Bledy z kosmosu to najczesciej bledy z watkow, nie wiem czy tego uzywasz ale jesli tak to stawialbym na to ze zwalniasz obiekty do ktorych chca sie jeszcze odwolywac inne watki. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 27, 2007 Autor Zgłoś Share Napisano Czerwiec 27, 2007 Toster - trafiłeś z tymi wątkami Tak jak pisałem, zamieszczam kodzik, dużo rzeczy zrobionych jest tak pomocniczo narazie, więc nie sugerujcie się, że to miało tak ostatecznie wyglądać . Może wy dojdziecie co jest nie tak z tym przerywaniem KOD ŹRÓDŁOWY Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Iskar Napisano Czerwiec 27, 2007 Zgłoś Share Napisano Czerwiec 27, 2007 Nie wiem jakich komponentow/klas uzywasz, ale jesli masz cliejnta stawianego na formie jako komponent to nie wywoluj na nim free, robi to forma, moze dlatego miales AV. A przypadkiem cechą Free nie jest to, że nawet po wywołaniu na obiekcie, który już został zwolniony, nie powoduje błędu? Gdzieś tak słyszałem.. Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Czerwiec 27, 2007 Zgłoś Share Napisano Czerwiec 27, 2007 tak pod warunkiem ze jest to metoda statyczna lub taka ktora nie odwoluje sie do pol klasy. Ja osobiscie odradzam stosowanie free na rzecz FreeAndNil. dla zainteresowanych, kod w C++ ale w delphi jest ten sam mechanizm (tak nawiasem jest to mechanizm pozwalajacy na wygranie kolejnego piwa ) --------------------- dupsko.h #ifndef test_h #define testXXB]YP[J N]]NBZ[BYFW7CÓ6VćF`GW6ść7\06ć6VFRŃ(ąŃ(ąąiostream> void TTest::CosTam(){ std::cout<<"[i][[YHNB[XZ[[&v2D4\"&weEFW7BGCEFW7BTfwC65F(źź%ąŃŃ(%(%Ń(%Ń)( oczywiscie efektem bedzie AV, ale wywalcie z TTest::CosTam odwolanie do fTest i sprobojcie jeszcze raz... prawie jak czary Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Czerwiec 27, 2007 Zgłoś Share Napisano Czerwiec 27, 2007 EDIT: Ech, znów nie zauważyłem odpowiedzi Toster'a ;-D Raczej nie ;-) procedure A(); var Obj: TObject; begin Obj := TObject.CrX]NYNH[YN[łŚźŚ+&Wh9\"{Ł}śjx, V(n7ZzfZzZaYHXYNY[Y[ [[FW7G&ŚVćC I jeśli obiekt jest zwolniony, a nie ma przypisanego nil, to będzie próbował zwolnić coś, co jest już zwolnione, czyli -> AV. Tu można poczytać trochę o tym: http://groups.google.com/group/borland.pub...0f82d0b26ab5a63 ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Czerwiec 27, 2007 Autor Zgłoś Share Napisano Czerwiec 27, 2007 Przeglądał ktoś mój kod? Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Piotr1 Napisano Listopad 30, 2007 Zgłoś Share Napisano Listopad 30, 2007 Przeglądał ktoś mój kod? Jeżeli odkopuję temat, to nie ważne... Poprzeglądałbym go, ale został usunięty :/ Wgraj na jakieś SpeedyShare Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.