lynx Temat założony przez niniejszego użytkownika |
SocketW i brak obsługi wielu klientów? » 2008-09-18 15:19:00 No, cóż mam 2 pliki c++ serwer i klient. Polegające na tym że co wpiszemy w okienku serwera natychmiast jest wysyłane do klienta, niestety :/ program kompiluje się, ale obsługuje tylko jednego klienta ;(. Nie wiem, może są jakieś funkcje na to (choć ich nie widze), ale wydaje mi się, że biblioteka(Serwer) powinna obsługiwać wiele połączeń, bez dodatkowych funkcji. Co o tym sądzicie, i czy wiecie jakby to rozwiązać?
Dodam jeszcze, że mam problem, bo tak samo nie wiem jak przesłać typ int, a żadnego tutka na stronie oprócz dokumentacji nie ma. Wysyłałem 2 razy e-maila jak mam to zrobić, odpowiedzi zero. Więc mam małą ochotę przejść na HawkNL, zamiast SocketW. Co do HawkNL to, nie mogę znaleźć w dokumentacji funkcji w stylu send(). Ale, będę jeszcze szukał ;P |
|
DejaVu |
» 2008-09-18 15:31:16 Dane transmituje się przez sieć zawsze w postaci binarnej. Musisz napisać sobie protokół transmisji, który skonwertuje int'a na tekst, a następnie ten tekst (czyli 4 bajty) wyśle do klienta.
Co do obsługi wielu klientów... nie znam tej biblioteki, którą używasz ale na WinSock'u masz ten sam problem w przypadku protokołu TCP, który rozwiązywany jest deskryptory plików: fd_set() lub przez tworzenie procesów.
Polecam się wczytać w dokumentację biblioteki, którą używasz - może jest zaprojektowany łatwy mechanizm do obsługi wielu klientów TCP. |
|
lynx Temat założony przez niniejszego użytkownika |
» 2008-09-18 16:27:02 Tylko to konwenterowanie nie takie proste jest. Nie wiem mam utworzyć funkcję w stylu: swicth(liczba) { case 1 : tekst = "1"; break; .... czy jakoś inaczej ;P Bo mając do czynienia z liczbami 1000 to bym się trochę orobił nie mówiąc już o 100 000 ;P A co do wielu klientów to znalaźłem takie coś, może zajrzysz: http://www.digitalfanatics.org/cal/socketw/index.htmlsą tam funkcje: -get_fd(); -fsend(); -frecv(): -fsendmsg(); -cloese_fd(); Niby podobne do set_fd(), co prawda nie zbyt to umiem przetłumaczyć(stronę), ale tak wydaje mi się, że są one przeznaczone do czegoś innego. Czy np. w UDP, SSL/TTL jest też problem z wieloma klientami, czy tak jest tylko w przypadku TCP/IP? Nie mogę się dowiedzieć czego używa HawkNL TCP/IP czy UDP. Ale w przypadku, gdy HawkNl łączy się używając protokołu TCP/IP problem też taki jest? |
|
DejaVu |
» 2008-09-18 18:25:46 |
|
lynx Temat założony przez niniejszego użytkownika |
» 2008-09-18 18:39:22 Tylko że ten przykłąd nie działa, ale bo ja go nie umiem wykonać ;P. Wogóle przydałoby się jakieś wytłumaczenie tego przykładu. |
|
DejaVu |
» 2008-09-18 18:44:18 Działa - jesteś leniwy: #include <string> int main() { int liczba; char * bufor = new char[ 400 ]; memcpy(( char * ) & liczba, bufor, sizeof( liczba ) ); delete[] bufor; return 0; } |
|
lynx Temat założony przez niniejszego użytkownika |
» 2008-09-18 19:42:36 Może z tą leniwością to mówisz prawdę, ale akurat wtedy nie miałem namyśli twojego sposobu. ;P ;P Chodziło mi o sposób umieszcozny na stronie SocketW ;D Kompilować się kompiluje, ale nie wiadomo jak zbudować klienta i po uruchomieniu obydwu aplikacji, one automatycznie zamykają(złe funkcje w złym miejscu, poumieszczane przez moją osobę). |
|
« 1 » |