matka5432 Temat założony przez niniejszego użytkownika |
[SFML] Failed to bind socked to port .... » 2015-03-11 12:58:48 Witam was, dlaczego program po natknięciu się na funkcje sock.bind() wyświetla komunikat jak w temacie? poniżej zamieszczam kod #include <SFML/Network.hpp> #include <iostream> using namespace std; int main() { sf::UdpSocket sock; const int datasize = 100; char data[ datasize ] = "lalal ko no e zioro"; sf::IpAddress ipdo( "192..." ); unsigned int portdo = 5600; if( sock.send( data, datasize, ipdo, portdo ) != sf::Socket::Done ) { cerr << "Nie mozna wyslac danych!\n"; exit( 1 ); } sf::IpAddress ipod( "192..." ); unsigned int portod = 5600; unsigned int senderport = 5400; unsigned int received; sock.bind( portod ); if( sock.receive( data, datasize, received, ipod, senderport ) != sf::Socket::Done ) { cerr << "Nie mozna odebrac danych!\n"; exit( 1 ); } cout << "Odebrano bajtów: " << received << endl; return 0; }
Chciałem jeszcze zapytać, dlaczego w logu podczas kompilacji mam error'a dotyczącego sock.receive() o treści: no matching function for call to 'sf::UdpSocket::receive(char [100], const int&, unsigned int&, sf::IpAddress&, unsigned int&)'|
PS. Podczas kompilacji usunąłemm funkcję sock.receive() zastępując ją wartością jeden, dlatego kod został skompilowany. |
|
Lora |
» 2015-03-11 13:23:04 Czytaj komunikaty kompilatora: no known conversion for argument 5 from 'unsigned int' to 'short unsigned int&' . short unsigned int senderport = 5400;
Teraz powinno działać. EDIT: A co do tej funkcji bind(), to może ten port masz już zajęty, spróbuj dać jakiś inny. |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2015-03-11 14:05:30 Faktycznie, teraz działa sock.receive(). Jeszcze nie jestem tak obyty w programowaniu. Dzieki :) Jeśli chodzi o bind, próbowałem ustawić kilka wartości z przedzialu 5600 do 56000. Niestety nic nie pomaga. |
|
czosnek17 |
» 2015-03-11 16:36:30 |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2015-03-18 12:52:04 Nadal coś mi nie wychodzi.. Funkcja receive zatrzymuje program i nasłuchuje. Ale niestety nic nie odbiera. podzieliłem nawet kod na 2 programy i kiedy włączę talket (wysyłający) to funkcja receive w drugim programie w ogóle nie reaguje. Odbieram na portach 50000 - 60000, a IP brałem z ip config to na samej gorze 192.168.... oraz ze stron które pokazują moje ip (oba ip były różne). W żadnym przypadku funkcja receve nie reaguje. |
|
Lora |
» 2015-03-18 13:31:57 Może to IP wpisujesz nieprawidłowe. Spróbuj może przez hamachi się łączyć i zobacz czy działa (tam przynajmniej będziesz miał pewność, że IP jest dobre). |
|
czosnek17 |
» 2015-03-18 16:38:47 Użyj localhosta 127.0.0.1 i sprawdź, czy nic nie blokuje ruchu sieciowego. |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2015-03-18 22:19:30 Lora masz rację - wpisywałem złe IP. Skąd mam w takim razie wiedzieć jakie mam IP nie używając tak okrężnej drogi jak hamachi?
Jednak problem nie do końca rozwiązany. Postęp jest taki, że wiadomość wysyła się pod warunkiem, ze programy uruchomione są na tym samym komputerze. Wysłałem program koledze i wpisywaliśmy IP które pokazuje hamachi (on moje, ja jego), następnie IP, które pokazuje strona (coś typu moje IP itp) oraz IP z cmd po wpisaniu ipconfig. Niestety nic z tego nie działa. Kiedy uruchamiam programy na jednym komputerze działają ip z cmd oraz hamachi. |
|
« 1 » 2 |