Problème TCPListener, Sockets : Une seule donnée reçue
Bonjour à tous,
j'ai un projet windows forms qui est censé communiquer avec un autre projet (Ogre 3D).
Du côté windows forms j'ai utilisé la classe du .net framework TCPListener pour créer mon serveur qui sert à écouter et recevoir les données envoyées par le client.
Server:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| ref class leserver
{
public:
void travail()
{
System::Net::IPAddress^ ipAddress = System::Net::Dns::Resolve( "127.0.0.1" )->AddressList[ 0 ];
TcpListener^ tcpListener = gcnew TcpListener( ipAddress,1300 );
tcpListener->Start(1);
array<Byte>^bytes = gcnew array<Byte>(256);
while (true){
Thread::Sleep(100);
TcpClient^ client =tcpListener->AcceptTcpClient();
NetworkStream^ stream = client->GetStream();
stream->Read( bytes, 0, bytes->Length );
//MessageBox::Show(System::Text::Encoding::ASCII->GetString(bytes));
donnee=(System::Text::Encoding::ASCII->GetString(bytes));
bytes->Clear(bytes,0,30);
}
}
System::String^ donnee;
}; |
le client:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <winsock2.h>
class leclient
{
public:
void initetconnect()
{
WSAStartup(MAKEWORD(2,0), &WSAData);
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family = AF_INET;
sin.sin_port = htons(1300);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
}
void envoi(const char* donnee ){
send(sock, donnee, 30, 0);
}
WSADATA WSAData;
SOCKET sock;
SOCKADDR_IN sin;
}; |
le hic est que je reçois tout le temps la même chose sur le serveur alors que je fais:
Code:
1 2 3 4 5 6 7 8
|
i=0;
-debutboucle
...
| i++;
| monclient.envoi(Ogre::StringConverter::toString(i).c_str());
...
-finboucle |
la boucle marche bien et le i est bien incrémenté (j'ai vérifié côté client) mais du côté server je reçois toujours la première donnée uniquement, c'est à dire que quand i est initialisé à 0, je ne reçois que des 1 tout le temps alors que je voudrais recevoir 1,2,3...
quelqu'un peut-il m'expliquer pourquoi?
Merci d'avance.