Bonjour

J'ai un souci de réception lors de gros paquet.

Typiquement, j'ai une première application client serveur qui accepte les connexion d'un client et lui envoi une socket, par un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
	Wsocket->Send(wrBuf,wrBuf.GetLength(),0);
La taille du CString peut etre de 4096 bytes envoyé en une fois.

DE l'autre coté mon client est dans un activeX et recoit en synchrone cette socket par

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TCHAR  rdBuf[32768];
	int nRcvBufSize = 32768;
	int nint = sizeof(int);
	int nbRead = 0;
 
 
		CSocket *Clientsocket=new CSocket;
		if (Clientsocket->Create())
		{
 
			if (Clientsocket->Connect(AddressIP,Port) )
			{
				Clientsocket->GetSockNameEx(myName,myPort);
				Clientsocket->SetSockOpt(SO_RCVBUF,&nRcvBufSize,nint,SOL_SOCKET);
 
				Order.Format(_T("%s:GETI"),myName);
				Clientsocket->Send(Order,Order.GetLength());
				nbRead = Clientsocket->Receive(rdBuf,32768);
Avec une taille de buffer a 32768.

Lorsque je met mon activeX sur un windows vista je recoit ma trame complete.
En mettant l'activeX sur un XP, la trame ne m'arrive pas complete.

Je pensais que les sockets etait un process qui en cas de paquet trop grand (plus grand que le MTU) les decoupait et les reassemblait et que se soit transparent pour l'utilisateur Est ce vrai?

Je souhaite restait en Socket synchrone comment envoyé et recevoir des paquet de grosse taille (environ 10ko) sans perdre des données en cours?

Cordialement