Je suis passé sous SFML 2.1
Je l'ai fait depuis les sources à l'aide de cmake.
J'était pas trop certain d'utiliser les bonne version.
Pour vérifier j'ai fait:
ldd -v ./monapplication | grep "sfml"
libsfml-network.so.2 => /usr/local/lib/libsfml-network.so.2 (0x00007f4824be4000)
libsfml-graphics.so.2 => /usr/local/lib/libsfml-graphics.so.2 (0x00007f48249a5000)
libsfml-window.so.2 => /usr/local/lib/libsfml-window.so.2 (0x00007f482478f000)
libsfml-system.so.2 => /usr/local/lib/libsfml-system.so.2 (0x00007f4824585000)
puis dans /usr/local/lib
ls
-la
| grep
"sfml"lrwxrwxrwx
1 root root
18 août
6 17:06 libsfml
-audio.
so -> libsfml
-audio.
so.2
lrwxrwxrwx
1 root root
20 août
6 17:06 libsfml
-audio.
so.2
-> libsfml
-audio.
so.2.1
-rw
-r
--r
-- 1 root root
85771 août
6 17:06 libsfml
-audio.
so.2.1
lrwxrwxrwx
1 root root
21 août
6 17:06 libsfml
-graphics.
so -> libsfml
-graphics.
so.2
lrwxrwxrwx
1 root root
23 août
6 17:06 libsfml
-graphics.
so.2
-> libsfml
-graphics.
so.2.1
-rw
-r
--r
-- 1 root root
302714 août
6 17:06 libsfml
-graphics.
so.2.1
lrwxrwxrwx
1 root root
20 août
6 17:06 libsfml
-network.
so -> libsfml
-network.
so.2
lrwxrwxrwx
1 root root
22 août
6 17:06 libsfml
-network.
so.2
-> libsfml
-network.
so.2.1
-rw
-r
--r
-- 1 root root
130445 août
6 17:05 libsfml
-network.
so.2.1
lrwxrwxrwx
1 root root
19 août
6 17:06 libsfml
-system.
so -> libsfml
-system.
so.2
lrwxrwxrwx
1 root root
21 août
6 17:06 libsfml
-system.
so.2
-> libsfml
-system.
so.2.1
-rw
-r
--r
-- 1 root root
55420 août
6 17:04 libsfml
-system.
so.2.1
lrwxrwxrwx
1 root root
19 août
6 17:06 libsfml
-window.
so -> libsfml
-window.
so.2
lrwxrwxrwx
1 root root
21 août
6 17:06 libsfml
-window.
so.2
-> libsfml
-window.
so.2.1
-rw
-r
--r
-- 1 root root
115016 août
6 17:05 libsfml
-window.
so.2.1
Avec cela, je pense être certain d'avoir les bonne versions au niveau des libs.
Malgrè le changement de version, le problème reste identique (pas de mieux, pas de pire)
Juste une précision que j'avais omis, les programmes tournent sur linux.
Je vais faire un programme minimal qui reproduit mon problème.
C'était simplement pour y mettre un Makefile avec pour t'éviter de l'écrire si tu voulais le tester.
voila:
#include <SFML/Network.hpp>
#include <iostream>
void sendBigPaquet(int size, sf::TcpSocket& socket)
{
std::cout<<"envoie du paquet de taille:"<<size<<std::endl;
sf::Packet paquet;
paquet<<sf::Uint32(size);
for(int i=0;i<size;++i)
{
paquet<<sf::Uint32(0);
}
socket.send(paquet);
}
void receiveBigPaquet(sf::TcpSocket& socket)
{
sf::Packet paquet;
if (socket.receive(paquet)==sf::Socket::Done)
{
sf::Uint32 size;
paquet>>size;
std::cout<<"reception d'un paquet de taille :" << int(size)<<std::endl;
//for(int i=0;i<int(size);++i)
//{
//sf::Uint32 b;
//paquet>>b;
//}
}
}
int main(int argc, const char *argv[])
{
std::cout<<"serveur(0) ou client(1)"<<std::endl;
int reponse;
std::cin>>reponse;
std::cout<<"port:"<<std::endl;
int port;
std::cin>>port;
if (reponse==0)
{
// Serveur
sf::TcpListener serverListener;
sf::TcpSocket socket;
socket.setBlocking(false);
serverListener.setBlocking(false);
serverListener.listen(port);
while (serverListener.accept(socket)!=sf::Socket::Done)
sf::sleep(sf::seconds(0.3));
int size=1;
for(;;)
{
sendBigPaquet(size,socket);
sf::sleep(sf::seconds(1.0));
size*=2;
}
}
else
{
// client
sf::TcpSocket socket;
socket.setBlocking(false);
while(socket.connect("127.0.0.1",port)!=sf::Socket::Done)
sf::sleep(sf::seconds(0.3));
for(;;)
{
receiveBigPaquet(socket);
sf::sleep(sf::seconds(0.3));
}
}
return 0;
}
et chez moi, cela donne ceci:
server:
./main
serveur(0) ou client(1)
0
port:
1234
envoie du paquet de taille:1
envoie du paquet de taille:2
envoie du paquet de taille:4
envoie du paquet de taille:8
envoie du paquet de taille:16
envoie du paquet de taille:32
envoie du paquet de taille:64
envoie du paquet de taille:128
envoie du paquet de taille:256
envoie du paquet de taille:512
envoie du paquet de taille:1024
envoie du paquet de taille:2048
envoie du paquet de taille:4096
envoie du paquet de taille:8192
envoie du paquet de taille:16384
envoie du paquet de taille:32768
envoie du paquet de taille:65536
envoie du paquet de taille:131072
envoie du paquet de taille:262144
envoie du paquet de taille:524288
envoie du paquet de taille:1048576
envoie du paquet de taille:2097152
envoie du paquet de taille:4194304
envoie du paquet de taille:8388608
envoie du paquet de taille:16777216
client:
./main
serveur(0) ou client(1)
1
port:
1234
reception d un paquet de taille :1
reception d un paquet de taille :2
reception d un paquet de taille :4
reception d un paquet de taille :8
reception d un paquet de taille :16
reception d un paquet de taille :32
reception d un paquet de taille :64
reception d un paquet de taille :128
reception d un paquet de taille :256
reception d un paquet de taille :512
reception d un paquet de taille :1024
reception d un paquet de taille :2048
reception d un paquet de taille :4096
reception d un paquet de taille :8192
reception d un paquet de taille :16384
reception d un paquet de taille :32768
reception d un paquet de taille :65536
reception d un paquet de taille :131072
reception d un paquet de taille :262144
reception d un paquet de taille :524288
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
reception d un paquet de taille :1048576
Si tu procède comme cela , as tu le même problème :
void sendBigPaquet(sf::Packet & paquet, int size, sf::TcpSocket& socket)
{
std::cout<<"envoie du paquet de taille:"<<size<<std::endl;
paquet<<sf::Uint32(size);
for(int i=0;i<size;++i)
{
paquet<<sf::Uint32(0);
}
socket.send(paquet);
}