Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML2.0] TCP

Ostatnio zmodyfikowano 2013-08-03 14:19
Autor Wiadomość
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.
P-88732
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.php
Po przeczytaniu wiele się powinno rozjaśnić. W celu dalszych niejasności tudzież nauki można zajrzeć do dokumentacji.
P-88744
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ę:)
P-88759
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:
C/C++
#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?
P-89380
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).
P-89381
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.
P-89387
MrPoxipol
» 2013-08-03 14:00:10
Daj najwyżej Sleepa 50ms w pętli.
sf::sleep( sf::milliseconds( 50 ) )
P-89389
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.
P-89392
1 « 2 »
Poprzednia strona Strona 2 z 2