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ć.
|
|
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.
|
|
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::receiveJak 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ć? |
|
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 :) |
|
Parapet Temat założony przez niniejszego użytkownika |
» 2014-11-08 11:54:52 Mam taki kod: #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; std::ifstream plik( "ip.txt" ); if( !plik.is_open() ) { std::cout << "File not found!" << std::endl; 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; } 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? |
|
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.
|
|
Parapet Temat założony przez niniejszego użytkownika |
» 2014-11-13 14:29:43 #include <SFML/Graphics.hpp> #include <SFML/Network.hpp> #include <iostream> #include <fstream> #include <conio.h> int main() { 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 ); 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 ) ); 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? |
|
1aam2am1 |
» 2014-11-13 14:32:11 socket.send( info.c_str(), sizeof( info.c_str() ) );
Chyba tak już. |
|
1 « 2 » 3 4 |