Mon application plante lorsque j'essaie d'imprimer le tampon. Sinon, ça fonctionne bien. Voici le code:Comment est-ce que je retourne un char d'une fonction qui utilise winsock à recv à partir du socket?
irc.h
class IRC
{
public:
void sockconnect(char * hName, int portNum);
void sockwrite(char* sendbuf);
char sockread(void);
bool connected;
private:
WSADATA wsaData;
SOCKET m_socket;
sockaddr_in clientService;
LPHOSTENT hostEntry;
};
irc.cc
char IRC::sockread(void)
{
int result;
char buffer[DEFAULT_BUFLEN];
result = recv(m_socket, buffer, DEFAULT_BUFLEN, 0);
if (result > 0) {
return *buffer;
}
else if (result == 0)
{
connected = false;
return *buffer;
}
else {
printf("recv failed with error: %d\n", WSAGetLastError());
return *buffer;
}
}
main.cc
IRC client;
while (client.connected == true) {
char buffer = client.sockread();
if (buffer == NULL)
break;
printf ("Buffer: %s\n",buffer);
}
Désolé, je ne comprends pas. N'est-ce pas ce que je fais déjà? – thorvald
@thorvald: Non, en fait vous ne renvoyez que le premier caractère. Voir mon édition –
Vous retournez un seul caractère (le premier caractère dans votre tampon) et vous essayez d'imprimer ce caractère comme une chaîne (un caractère nul terminé *) – nos