[SFML2.0] TCP
Ostatnio zmodyfikowano 2013-08-03 14:19
RazzorFlame |
» 2013-07-25 11:25:06 @Admixior warto by było mu wspomnieć różnice pomiędzy TCP a UDP (chyba że już ją zna) i podkreślić że używając UDP jest narażony na: "Zabłądzenie danych" (innymi słowy mogą nie dojść do celu) a jeśli już dotrą to mogą nie dojść we właściwej kolejności. |
|
Mrovqa |
» 2013-07-25 13:54:24 Widzę, iż @polkom21 zapewne nie przeczytał tutoriala na oficjalnej stronie, a przynajmniej nic z niego nie wyciągnął. Radzę się zapoznać z tym: http://www.sfml-dev.org/tutorials/2.0/network-socket.phpPo przeczytaniu wiele się powinno rozjaśnić. W celu dalszych niejasności tudzież nauki można zajrzeć do dokumentacji. |
|
polkom21 Temat założony przez niniejszego użytkownika |
» 2013-07-25 16:04:35 No wiem wiem, że TCP jest lepsze od UDP więc na pierwszy rzut zabrałem się z a TCP ale no niestety zastałem małe problemy. @Mrovqa wiem gdzie jest dokumentacja od SFML bo od czasu do czasu do niej zaglądam. Tutka jeżeli chodzi o sieć to nie czytałem ale w wolnej chwili to nadrobię:) |
|
polkom21 Temat założony przez niniejszego użytkownika |
» 2013-08-03 13:05:26 No dobra znalazłem chwile na dalsze grzebanie się w tym. Jeżeli chodzi o gniazda nieblokujące w SFML to wymaga to tylko jednej prostej linijki :P Na chwilę obecną mam coś takiego: #include <SFML/Network.hpp> #include <iostream>
int main() { bool run; sf::UdpSocket socket; char message[ 128 ]; std::size_t received; sf::IpAddress sender; unsigned short senderPort; socket.setBlocking( false ); if( socket.bind( 25565 ) == sf::Socket::Done ) { std::cout << "Serwer zostal uruchomiony.\n"; run = true; } else run = false; while( run ) { if( socket.receive( message, sizeof( message ), received, sender, senderPort ) == sf::Socket::Done ) { std::cout << "[" << sender << ":" << senderPort << "] " << message << std::endl; } } }
I moje pytanie brzmi. Czy musi to zżerać aż tyle procka? |
|
DejaVu |
» 2013-08-03 13:15:11 Da się to napisać dużo lepiej, ale najpierw trzeba sporo poczytać i co ważniejsze zrozumieć jak działają mechanizmy komunikacji sieciowej (w tym również poznać narzędzia do komunikacji sieciowej oraz ich ograniczenia). |
|
ison |
» 2013-08-03 13:42:58 I moje pytanie brzmi. Czy musi to zżerać aż tyle procka?
|
Zżera tyle procka ile mu każesz. Ta pętla wygląda tak, że chcesz poświęcić 100% procesora na jak najszybsze sprawdzanie czy nie doszedł pakiet. Jak dodasz renderowanie to przynajmniej vsync będzie ograniczał fps. |
|
MrPoxipol |
» 2013-08-03 14:00:10 Daj najwyżej Sleepa 50ms w pętli. sf::sleep( sf::milliseconds( 50 ) ) |
|
polkom21 Temat założony przez niniejszego użytkownika |
» 2013-08-03 14:19:28 @DejaVu właśnie próbuję zrozumieć co jak z czym działa. Jak bym wszystko wiedział to bym tu na forum nie pisał. @MrPoxipol no niestety vsync tu nie będzie działał bo to serwer będzie więc okno odpada. Co do usypiania na razie sprawuje się bardzo dobrze. Pewnie za jakiś czas dojdę dalej co z tym biega i napisze się coś lepiej. |
|
1 « 2 » |