[C++][SOCKET]Probleme envoi

Signaler
Messages postés
39
Date d'inscription
lundi 7 avril 2003
Statut
Membre
Dernière intervention
7 juillet 2006
-
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
-
Salut à tous.

Voila je suis en train de dev une petite dll en C++ utilisant des SOCKET. En réception, pas de problème, mais en envoi... Pas moyen.

Lorsque je fais mon send, il ne se passe strictement rien. Par contre, lorsque je ferme mon socket, le server sur lequel je suis sensé envoyé recoit bien une partie des messages mélangés les uns aux autres.

Voici ma classe :

Code :

class COMSERVER_API CComServer {
private :
WSADATA WSAData;
SOCKET sock;
SOCKADDR_IN sin;
char* buffer;
ETAT_CONNEXION m_Etat;
int m_nEssai;
public:
CComServer(LPCSTR p_IP);
~CComServer();

void SetStream (LPCSTR p_string);
char* GetStream();

bool TryXConnection(int p_nEssai);
void Deconnection();

bool Attach();
void Detach();

};

Ma connexion :

Code :

//___________________________________________________________________
//Constructeur et connexion au server
CComServer::CComServer(LPCSTR p_IP)
{
m_nEssai = 3;
//Je suis OFFLINE pour l'instant
m_Etat = OFFLINE;
buffer = new char[65525];
//Initialisation du buffer et du socket
WSAStartup(MAKEWORD(2,0), &WSAData);
sin.sin_addr.s_addr= inet_addr(p_IP);
sin.sin_family=AF_INET;
sin.sin_port=htons(13023);
sock = socket(AF_INET,SOCK_STREAM,0);
//Liaison du socket
m_Etat = CHARGE;
//Tentative de connexion
TryXConnection(m_nEssai);

return;
}

Je vois passe ma fonction TryXConnection qui me permet d'essayer de me connecter à plusieurs reprises puisque sur la connexion je n'ai aucun probleme. En résumé elle fait le bind et le connec.

Viens ensuite ma fonction d'envoi

Code :

void CComServer::SetStream(LPCSTR p_string)
{
send(sock,p_string, sizeof (p_string),0);
int ntmp = WSAGetLastError();
}

J'ai rajouté le WSAGetLastError pour vérifier et j'ai toujours 0.

Dans mon code je fais un SetStream avec "PING" et ensuite je me déco. Sur le SetStream() mon serveur ne recoit rien mais lorsque je me deco (closesocket), alors il recoit un mélange de mon ping et de mon message de deco...

Si quelqu'un a une idée... Je suis prenneur.

Merci d'avance

<center>Mess with the best
Die Like the rest</center>

1 réponse

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

sizeof(p_string) ne renvoies pas la taille de la chaine, mais la taille de la variable p_string, qui est un pointeur.

Remplace sizeof(p_string) par strlen(p_string) dans ton send.