[SFML 2.1] Wysylanie pakietów przez socket
Ostatnio zmodyfikowano 2013-08-17 18:15
MonoMisiek Temat założony przez niniejszego użytkownika |
[SFML 2.1] Wysylanie pakietów przez socket » 2013-08-17 13:46:14 Mam problem z wysyłaniem danych przez soket. Robię tak jak w tutorialu http://www.sfml-dev.org/tutorials/2.1/network-packet.phpAplikacja klienta int a = 2; int b = 4; sf::Packet packet; packet << a << b; if( socket.send( packet ) != sf::Socket::Done ) { cout << "pakiet sie nie wyslal" << endl; } else cout << "pakiet sie wyslal" << endl; ------------------------- Aplikacja serwera int a; int b; sf::Packet packet; packet >> a >> b; socket.receive( packet );
cout << " a= " << a << " b= " << b << endl; ------------------------- Zamiast a= 2 b= 4, wyskakuje a= -858993460 b= -858993460... Jak to naprawić?? |
|
Mrovqa |
» 2013-08-17 14:08:43 Może byś napisał, co konkretnie nie działa? Mam nadzieję, iż nawiązujesz połączenie między socketami. W takim przypadku prawdopodobne jest, iż firewall Ci blokuje komunikację lub nie masz przekierowania portów (jeśli nie łączysz się w LANie). Sprawdź najpierw, czy program działa na localhoście. |
|
MonoMisiek Temat założony przez niniejszego użytkownika |
» 2013-08-17 14:16:18 Robię właśnie na localhoscie. Firewall windowsowy wyłączony, innego nie mam. Klient łączy się z serwerem i nie wywala przy tym błędów. Co dokładnie nie działa? Gdy wysyłam 4, odbieram -858993460. Gdy robię dokładnie tak jak w tutorialu wysyłam: sf::Uint16 x = 10; std::string s = "hello"; double d = 0.6; otrzymuję: x= 52428 s= d= -9.25596e+061 |
|
ison |
» 2013-08-17 14:46:14 Nawet nie sprawdzasz co zwraca receive |
|
MonoMisiek Temat założony przez niniejszego użytkownika |
» 2013-08-17 15:31:13 nie rozumiem jeśli chodzi o to cout<<socket.receive(packet); //to się = 3
|
|
megatron |
» 2013-08-17 16:11:57 musisz pakiet przypisać do jakiejś zmiennej a potem wyświetlić |
|
ison |
» 2013-08-17 16:45:37 Poza tym na serwerze najpierw wczytujesz zmienne, a potem dopiero odbierasz pakiet |
|
MonoMisiek Temat założony przez niniejszego użytkownika |
» 2013-08-17 16:52:35 Przecież przypisuje do a i b... Mniejsza z tym, znalazłem błąd, przy definicji serwera. Tutorial wprowadził mi małe zamieszanie do kodu...
Czasami jest użyte sf::TcpSocket socket; a przy deklaracji serwera sf::TcpSocket client;
inaczej mówiąc powinno być w tutorialu // accept a new connection sf::TcpSocket socket; //zamiast client if (listener.accept(socket) != sf::Socket::Done) //zamiast client
Niby wychodzi na to samo, ale przez socket z błędami idzie... |
|
« 1 » 2 |