bonjour à tous
j'essaie d'apprendre winsock en vc++ mode console pour le moment, et j'ai qlq difficultés...
en gros j'etabli bien une connection entre le serveru et le client , mais lorsque le serveur envoie une chaine de char, seul les 4 premiers char passent... et j vois pas pkoi....
j'ai deja pas mal cherché sur les forum etc pour comprendre comment out cela marchait; mais là je suis un peu perdu...
ps: pardon pour l'indentation les tests et les commentaires, mais j suis pas chez moi et c'est pas mais version originale du code
je remercie d'avance tous ceux qui mpourraient me donner un ptit coup de main
voila le code:
//
// serveur
//
#include "stdafx.h"
#include "winsock2.h"
#pragma comment(lib, "ws2_32.lib")
int main(int argc, char* argv[])
{
printf("Serveur\n");
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(6667);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
while(1)
{
int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
printf("connection acceptee\n");
char *buff = new char[25];
buff = "LLLLL world!\r\n\0";
send(csock, buff, sizeof(buff), 0);
printf ("chaine send : %s\n",buff);
}
}
return 0;
}
//
// Client
//
#include "stdafx.h"
#include "winsock2.h"
#pragma comment(lib, "ws2_32.lib")
void main(int argc, char* argv[])
{
printf("Client\n");
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
char *buffer = new char[25];
/* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family = AF_INET;
sin.sin_port = htons(6667);
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
recv(sock, buffer, sizeof(buffer), 0);
printf("buff = %s\n",buffer);
closesocket(sock);
WSACleanup();
//return 0;
}