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 unLa taille du CString peut etre de 4096 bytes envoyé en une fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Wsocket->Send(wrBuf,wrBuf.GetLength(),0);
DE l'autre coté mon client est dans un activeX et recoit en synchrone cette socket par
Avec une taille de buffer a 32768.
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);
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
Partager