Skocz do zawartości

[C] Winsock


Jaklub

Rekomendowane odpowiedzi

w tym temacie będę pisał swoje pytania dotyczące obsługi Winsocka, ponieważ niewiele rzeczy wiem na jego temat, a problemów najprawdopodobniej będzie więcej. przenosiny projektu z 39dll są ogólnie dużo bardziej bolesne niż przewidywałem. ;p

1. kiedy wysyłam pakiety w pętli while, pakiety są wysyłane i docierają. gdy jednak klient został dopiero zaakceptowany lub wiadomość jest wysłana poza pętlą, pakiety gubią się. połączenie jest TCP, nieblokujące. co może to powodować? czy użycie funkcji select pomoże? kod pokażę, kiedy będzie potrzeba (tego nie wiem)

2. znacie jakieś dobre kursy winsocka pisane zupełnie łopatologicznie? google nie bardzo mi pomógł, być może coś przegapiłem

 

z góry dzięki każdemu, kto będzie chciał napisać chociaż jedno zdanie w tym lub tym temacie.

 

ps. tak, wiem, że ostatnio zasypuję was pytaniami o obsługę sieci w C

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Kurcze, ktoś tu u nas robił grę online w C# bodaj, wiem, że to inny język, ale też bez 39dll... nie wiem czy to nie Boro Casso czasem? Pamiętam, że ktoś mi na GG kiedyś o tym pisał, że zrobił własny system do wysyłania danych.

Odnośnik do komentarza
Udostępnij na innych stronach

dzięki za odpowiedzi

Sprawdzasz błędy zwracane przez funkcje Winsocka ? Prawdopodobnie gniazdo w kliencie nie jest gotowe do wysłania bufora albo w serwerze do odebrania pakietu. (WSAEWOULDBLOCK ?)

żadne błędy nie są zwracane, kiedy to wysyłam

Odnośnik do komentarza
Udostępnij na innych stronach

Przypomniało mi się, że w książce 3D game engine programming był jeden rozdział, który wprowadzał do winsock'a. O ile dobrze pamiętam była tam stworzona bardzo łopatologiczna implementacja prostego komunikatora i wszystko było napisane bardzo zrozumiale.

Odnośnik do komentarza
Udostępnij na innych stronach

Użyj funkcji select przed tym wywołaniem send poza pętlą, żeby poczekać aż socket będzie zapisywalny. Chociaż takie coś nie jest zalecane w modelu nieblokującym -- zapisywalność gniazd powinno się sprawdzać w głównej pętli na wielu gniazdach i wtedy wysyłać dane.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...