Posts Tagged ageNet
Error: 10014
Posted by moriturius in Programowanie on Listopad 4, 2007
Wszystko fajnie i nawet powinno działać. Problem w tym że powinno można tu zastosować zamiennie z prawie a jak jest z tym drugim – wszyscy wiemy.
Co tym razem? Error 10014. WTF? Otóż to… Tutaj jest treść errora 10014:
WSAEFAULT: The system detected an invalid pointer address in attempting to use a pointer argument in a call.
Czyli że niby podaje zły adres… Ale gdzie?! Wywołanie recvfrom() wygląda na dobre i argumenty wszystkie są podefiniowane tak jak manual przykazał. Więc co jest źle? Tego być może nie dowiemy się w następnym odcinku…
EDIT: Rozwiązanie
Zaraz po napisaniu tego posta stwierdziłem, że jeszcze pogrzebie i odkryłem, że jednak nie można wyrzucić ostatniego argumentu z recvfrom() co wcześniej uczyniłem bo przecież wiem jaki rozmiar ma sockaddr_in. Poprzednio wstawiłem nam sobie NULL bo uważałem, że nie będę potrzebować tego argumentu… błąd… Ja go nie potrzebowałem, ale funkcja do działania owszem. Jako ostatni argument trzeba wstawić adres do zmiennej zawierającej sizeof(sockaddr_in) i wtedy wszystko działa.
Tym oto sposobem sprawiłem, że AGE potrafi już komunikować się ze światem poprzez UDP!
@Tarains: Napisałem już część ageNet, zadowolony?
Problemy z UDP
Posted by moriturius in Programowanie on Listopad 4, 2007
O ile komunikację sieciową za pomocą TCP potrafię zakodzić bezbłędnie o tyle ni cholery nie mogę poradzić sobie z UDP. Co prawda wiadomości są odbierane – mam tylko problem z ich odczytaniem…
Być może mój błąd wynika właśnie z tego, że niezbyt się zajmowałem protokołem UDP… Tak czy inaczej dzieje się tak:
- Włączam program i chodzi on normalnie (sprawdza czy nie ma wiadomości i jak nie to idzie dalej)
- Wysyłam do programu kilka bajtów przez UDP
- Program odczytuje bezbłędnie i tutaj pojawia się dopiero problem. Od tego miejsca program staje i oczekuje na kolejne wiadomości. To zatrzymuje pętlę i oczywiście program nie reaguje zupełnie na nic…
Może ktoś ma jakiś pomysł co tutaj pomoże? Ja staram się coś na to poradzić, ale średnio mi idzie
AGE – będą zmiany
Posted by moriturius in Programowanie on Listopad 3, 2007
Doszedłem do wniosku, że będę musiał zmodyfikować niektóre rozwiązania zastosowane w AGE – nie ze względu na wydajność ale estetykę
Poza tym kilka drobnych modyfikacji w module odpowiedzialnym za testowanie kolizji da mi możliwość pokombinowania z detekcją typu okrąg-wielokąt i okrąg-okrąg. W aktualnej wersji obsługiwane są jedynie wielokąty.
No i na końcu będzie trzeba coś zrobić z detekcją błędów, która w tej chwili jest raczej prowizoryczna i zakłada raczej że wszystko będzie działać
No i powróci nieśmiertelny temat ageNet! To straszne jak ciężko zebrać się do czegoś jeśli nie ma się bladego pojęcia jak powinno to wyglądać
Postanowiłem napisać jak na razie prostą obsługę UDP, a później się zobaczy i pewnie dodam jeszcze TCP.
ageNet – wielki powrót? :)
Posted by moriturius in Programowanie on Październik 29, 2007
Hmm, zapewne nie zdziwi was to specjalnie, ale dzisiaj też nic nie zakodziłem. Chyba zaczynam się starzeć
Jak wracam do domu to tak mi się nie chce… zwłaszcza jeśli mam bardzo interesujący wykład o bezpieczeństwie i szyfrowaniu danych. Swoją drogą – czasem żałuję, że nie noszę poduszki na wydział…
Chyba powinienem się w końcu wziąć za ten obiecany już 100 lat temu moduł ageNet, ale przyznam się bez bicia że nie wiem jak powinien wyglądać jego interfejs. Bez tego nie da rady nic napisać choćbym nawet chciał
Oglądałem już co daje SDL_Net i prawdę mówiąc doszedłem do wniosku, że to po prostu opakowany TCP, więc jeśli tak ma to wyglądać to mogę to napisać choćby zaraz, ale wciąż myślę nad czymś ciekawszym. Jednak w jakikolwiek sposób bym tego nie zrobił oznaczałoby to ukierunkowanie obsługi sieci na jakiś konkretny typ gry (np. RTS albo coś ).
Co wy o tym sądzicie? Chyba jednak efekt całego mojego kombinowania będzie taki, że obuduję po prostu TCP i UDP w jakieś proste i ładne klasy, opatrzę to nazwą ageNet, dorzucę do AGE i będę miał z głowy
ageNet?
Posted by moriturius in Programowanie on Wrzesień 23, 2007
Zaczynam powoli myśleć że nie dane mi jest napisanie modułu obsługi sieci do AGE. Oczywiście wbrew wszelkim przeciwnościom losu i tak powstanie, tylko strasznie irytujące jest to, ze żadna z dostępnych bibliotek nie spełnia moich oczekiwań, a kiedy już taka się znalazła to niestety nie mogę jej skompilować bo brakuje mi jakiejś biblioteki do SSL… Koszmar…
Popróbuję jeszcze dzisiaj trochę pokombinować i może da się olać SSL całkowicie bo i tak nie mam zamiaru go wykorzystywać.
Zależy mi na C++ Sockets Library bo z przykładów wnioskuję, że używa jej się wygodnie, a kod potrzebny do napisania prostego programiku sieciowego jest raczej krótki – w przeciwieństwie do innych bibliotek typu OpenTNL.
Wytłumaczenie
Posted by moriturius in Programowanie on Wrzesień 22, 2007
Ok, ostatnio trochę zaniedbałem stronę oraz sam piękny fach programistyczny. Dlaczego? Prawdę mówiąc sam chciałbym to wiedzieć. Zdaje się że brak mi pomysłu na napisanie modułu ageNet – o którym wspominałem na mojej poprzedniej stronie jak jeszcze działała…
Jeśli mam być szczery to nie wiem co taki moduł powinien udostępniać programiście bo sam nigdy z takiego nie korzystałem, a grę przez internet napisałem tylko jedną i to z użyciem czystych socketów
Postanowiłem jednak zmienić istniejący stan rzeczy i zabrać się wreszcie za coś konkretnego. Ostatnio Tarains zmotywował mnie do tego, żeby odświeżyć nieco moją stronę internetową, a teraz przyszedł czas żebym sam wziął się do roboty
Co przez to rozumiem? Otóż postanowiłem się przyjrzeć jak wygląda moduł SDL_Net i na jego podstawie napisać ten nieszczęsny ageNet – może wreszcie coś ruszy się do przodu