Jestem teraz na etapie lektury książki ,,Programowanie wieloplatfromowe z wxwidgets i c++". Chcę zrobić prosty komunikator a la gadu gadu. Czy znacie może jakieś dobre źródło na ten temat? Nie chodzi mi oczywiście o tutorial prowadzący za rączkę.
Bo na razie nie do końca rozumiem koncepcji czy pierwszy program ma być serwerem, czy klientem, a może każdy z programów ma być jednocześnie klientem i serwerem. I jak to powiązać z wątkami.
Chcę zrobić tak, żeby najpierw można było na kompie odpalać obie wersje i przetestować między portami komunikację, potem żeby w jednej sieci np. wiif można było się komunikować, a na końcu dodać jakieś szyfrowanie do tego.
Z góry dziękuję za każdą pomoc.
- Rejestracja:ponad 5 lat
- Ostatnio:ponad 4 lata
- Postów:85

- Rejestracja:prawie 16 lat
- Ostatnio:2 minuty
Jeżeli nic nigdy jeszcze nie robiłeś to BJ's Guide to Network Programming to miejsce od którego zaczynasz. Z pytaniami wróć, jak już przeczytasz ;)

- Rejestracja:ponad 17 lat
- Ostatnio:minuta
Dobra rada na razie omijaj wątki szerokim łukiem.
Skup się na jednym temacie na sieciach.
Dlaczego odradzam ci programowanie wielowątkowe?
Bo jest bardzo niedeterministyczne. Coś co u ciebie będzie działać zawsze u kogoś innego rzadko będzie w ogóle działać. Bugi wielowątkowe sąa trudne w lokalizacji analizie i naprawie.
Pułapki w programowaniu wielowątkowym potrafią być bardzo subtelne.
Z własnej obserwacji zważyłem, że 90% deweloperów twierdzących, że znają się na programowaniu wielowątkowym, nie zdaje sobie sprawy jak wiele rzeczy nie rozumieją w tym temacie.
Na temat sieci w wxwidgets raczej nic ci nie zaproponuje. Preferuję Qt.
- Rejestracja:ponad 5 lat
- Ostatnio:ponad 4 lata
- Postów:85
MarekR22 napisał(a):
Dobra rada na razie omijaj wątki szerokim łukiem.
Skup się na jednym temacie na sieciach.Dlaczego odradzam ci programowanie wielowątkowe?
Bo jest bardzo niedeterministyczne. Coś co u ciebie będzie działać zawsze u kogoś innego rzadko będzie w ogóle działać. Bugi wielowątkowe sąa trudne w lokalizacji analizie i naprawie.
Pułapki w programowaniu wielowątkowym potrafią być bardzo subtelne.Z własnej obserwacji zważyłem, że 90% deweloperów twierdzących, że znają się na programowaniu wielowątkowym, nie zdaje sobie sprawy jak wiele rzeczy nie rozumieją w tym temacie.
Na temat sieci w wxwidgets raczej nic ci nie zaproponuje. Preferuję Qt.
wxWidgets wspomniałe, bo akurat czytam tę książkę i fajnie się pisze, chociaż konfiguracja potrafi zdenerwować. Nie do końca też rozumiem jak działa komunikacja po sieci gdzie są adresy ipv6. Bo jak mamy ipv4 to spoko wpisujemy adres ip i port. Ale jak rozwiązać problem, że po uruchomieniu programu i mamy na liście tego użytkownika na drugim kompie, to wziąć jego adres, skoro w sieci jest dynamiczne przydzielanie adresów?
- Rejestracja:prawie 7 lat
- Ostatnio:około miesiąc
- Postów:3561
Mirai napisał(a):
wxWidgets wspomniałe, bo akurat czytam tę książkę i fajnie się pisze,
Yyyyy ??? Dla mnie to takie wieloplatformowe MFC, wszechwładne makra, i ignorowanie większości istotnych postulatów OOP
Bleee.
- Rejestracja:ponad 5 lat
- Ostatnio:ponad 4 lata
- Postów:85
0x666 napisał(a):
Po broadcaście wyślij zapytanie o przedstawienie się innych komunikatorów.
Nie rozumiem co masz na myśli. Broadcast masz na myśli wysłanie jakiegoś konkretnego pakietu?

- Rejestracja:około 9 lat
- Ostatnio:17 dni
- Postów:1039
Mirai napisał(a):
Nie do końca też rozumiem jak działa komunikacja po sieci gdzie są adresy ipv6. Bo jak mamy ipv4 to spoko wpisujemy adres ip i port. Ale jak rozwiązać problem, że po uruchomieniu programu i mamy na liście tego użytkownika na drugim kompie, to wziąć jego adres, skoro w sieci jest dynamiczne przydzielanie adresów?
Zacznijmy od tego - po co Ci jego adres? Do nawiązania połączenia czy identyfikowania użytkowników?
Wytłumacz też w czym Ci przeszkadza dynamicznie przedzielanie adresów?
Chętnie bym rozwiał Twoje wątpliwości, ale nie bardzo rozumiem istotę problemu.
- Rejestracja:prawie 20 lat
- Ostatnio:około rok
- Postów:2440
@Mirai: mam na myśli wysłanie pakietu UDP na adres rozgłoszeniowy sieci LAN. To, co tam wyślesz, to już zależy od twojego protokołu, może być zwykłe "hello\n"
;) Pozostałe komunikatory odbiorą tę wiadomość razem z adresem nadawcy, na który powinny też odpowiedzieć przykładowym "hello\n"
, by nadawca dostał adresy wszystkich aktywnych komunikatorów w sieci LAN. To tak w skrócie.

- Rejestracja:około 9 lat
- Ostatnio:17 dni
- Postów:1039
Jeśli adresy się zmieniają to odpalając program komunikacyjny na jednym komputerze, skąd będę wiedział jak połączyć się z drugim komputerem jeśli nie znam jego adresu? Jak niby stworzę wtedy socket'a i ustanowię połączenie?
A jaka jest architektura twojego rozwiązania? Bo jeżeli jest to klient-serwer, to adres serwera po prostu powinieneś znać albo go uzyskać np. po nazwie hosta. Jeżeli działa na zasadzie P2P, to możesz dokonać wyszukiwania w podsieci, @_0x666_ zaproponował jak to zrobić.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.