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

SFML Network - Klient i Serwer w oddzielnej aplikacji.

Ostatnio zmodyfikowano 2014-11-20 22:06
Autor Wiadomość
czosnek17
» 2014-11-04 21:05:18
Tym razem adres to też przypadek? :P
Nie przypisujesz wartości do zmiennej datas w odbieraniu, jeżeli to nie przez to to nie mam pomysłu, jutro będę miał czas to wytestować.
P-120016
Parapet
Temat założony przez niniejszego użytkownika
» 2014-11-05 19:28:59
Adres jest do mojej sieci wewnętrznej więc myślałem że tak będzie dobrze.
Po co mam do datas przypisywać wartość?


Jak uruchomiłem tą drugą część kodu w IDE (odpowiedzialna za odbieranie)
to wyskoczyło mi w konsoli: Failed to bind socket 9898.
P-120049
czosnek17
» 2014-11-06 17:43:02
No tak, ale ten adres jest niepełny. W kodzie, który podałeś zmieniłem adres na localhost (127.0.0.1) i zmienną datas przy odbieraniu na 20, działa.

Po co mam do datas przypisywać wartość?
Datas to rozmiar danych do odebrania sf::UdpSocket::receive
Jak uruchomiłem tą drugą część kodu w IDE (odpowiedzialna za odbieranie)
to wyskoczyło mi w konsoli: Failed to bind socket 9898.
Sprawdź w procesach czy program nie został. Poza tym, najpierw uruchom program odbierający i dopiero wysyłaj, bo jeżeli najpierw wysyłasz a potem zaczynasz odbierać, to czy to może działać?
P-120089
Parapet
Temat założony przez niniejszego użytkownika
» 2014-11-06 20:52:00
Dziękuje bardzo za pomoc ;)
Wszystko działa jak należy :)
P-120102
Parapet
Temat założony przez niniejszego użytkownika
» 2014-11-08 11:54:52
Mam taki kod:
C/C++
#include <SFML/Graphics.hpp>
#include <SFML/Network.hpp>
#include <iostream>
#include <fstream>
#include <conio.h>
int main()
{
    sf::IpAddress adress[ 8 ];
   
    std::cout << "Step: 1" << std::endl; //lepsze ni¿ debbuger ;p
    std::ifstream plik( "ip.txt" );
    if( !plik.is_open() )
    {
        std::cout << "File not found!" << std::endl; //widzisz to? ??
        return 0;
    }
    else
    {
        int counter = 0;
        std::cout << "Step: 2 - pocz¹tek czytania pliku." << std::endl;
        std::string linia, zawartosc;
        while( getline( plik, linia ) )
        {
            std::cout << "Step: 3 - petla" << std::endl;
            adress[ counter ] = linia;
            counter += 1;
        } //zobaczymy czy odczyta w ten sposób ;p
        for( int x = 0; x < 10; x++ )
             std::cout << adress[ x ].toString() << std::endl;
       
        std::cout << "Step: 4 - ostatnie" << std::endl;
    }
   
    _getch();
}

plik ip:

111.111.111
222.222.222
333.333.333
444.444.444
555.555.555
666.666.666
777.777.777
888.888.888
999.999.999

Czemu nie wypisuje poprawnie adresów?
P-120160
czosnek17
» 2014-11-08 19:44:10
W pierwszej pętli segmentation fault, bo masz więcej adresów w pliku, niż może pomieścić tablica (przynajmniej u mnie, tymczasowo Ubuntu). Poza tym w drugiej pętli też jest za dużo kroków. Jeżeli program szczęśliwie dotarł do wypisywania adresów, to wypisuje nieprawidłowo, bo w pliku są nieprawidłowe xD Adres to 4 liczby od 0 do 255 oddzielone kropkami.
P-120192
Parapet
Temat założony przez niniejszego użytkownika
» 2014-11-13 14:29:43
C/C++
#include <SFML/Graphics.hpp>
#include <SFML/Network.hpp>
#include <iostream>
#include <fstream>
#include <conio.h>
int main()
{
    //serwer - odbiera
    /*
        sf::TcpListener listener;
        std::cout <<"1"<<std::endl;
        sf::TcpSocket socket;
        std::cout <<"2"<<std::endl;
        listener.listen(50001);
        std::cout <<"3"<<std::endl;
        listener.accept(socket);
        std::cout <<"4"<<std::endl;
        std::cout <<"Po³¹czono z: "<<socket.getRemoteAddress().toString()<<std::endl;
        std::cout <<"5"<<std::endl;
        char bufor[30];
        std::cout <<"6"<<std::endl;
        size_t recived = 0;
        std::cout <<"7"<<std::endl;
        socket.receive(bufor, sizeof(bufor), recived);
        std::cout <<"8"<<std::endl;
        std::cout <<bufor<<std::endl;
        std::cout <<recived<<std::endl;
        std::cout <<socket.getRemoteAddress().toString()<<std::endl;
        _getch();
        return 0;*/
   
    std::fstream plik;
    plik.open( "ip.txt" );
   
    if( plik.good() == true )
    {
        while( plik.eof() )
        {
            std::cout << "0" << std::endl;
            std::string linia;
            getline( plik, linia );
            sf::TcpSocket socket;
            std::cout << "2" << std::endl;
            sf::Time timeout = sf::seconds( 0.5f ); //5 seconds
            if( socket.connect( linia, 50001, timeout ) == sf::Socket::Done )
            {
                std::cout << "3" << std::endl;
                std::cout << "Polaczono!" << std::endl;
                std::string info = "helloworld";
                socket.send( info.c_str(), sizeof( info ) ); //wysylamy
                std::cout << "4" << std::endl;
            }
            else
                 std::cout << "Nie mozna bylo sie polaczyc z " << socket.getRemoteAddress().toString() << std::endl;;
           
        }
    }
    _getch();
   
}

Tam gdzie jest serwer to aplikacja która odbiera informacje. Czemu to nie działa?
P-120507
1aam2am1
» 2014-11-13 14:32:11
C/C++
socket.send( info.c_str(), sizeof( info.c_str() ) ); //wysylamy
Chyba tak już.
P-120508
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona