Alors, j'ai pas mal progressé, sachant que je ne connaissais rien en socket et en thread :)
Mais j'ai un problème qui persiste, je sens que je suis proche du but, c'est un problème de pointeur générique, je ne maîtrise pas donc voici mon code :
(C'est loin d'être terminé !)
#include <winsock2.h> // bibliothèque pour utiliser les sockets
#include <iostream>
#include <string>
#include <pthread.h>
using namespace std;
void* ecoute(void* data, char buffer[1000], SOCKET sock, SOCKADDR_IN sin);
void* data;
int main()
{
char buffer[1000]; // tableau de la mémoire tampon
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData); // initialiser la bibliothèque winsock2
SOCKET sock; // déclarer le type socket
SOCKADDR_IN sin; // déclarer la structure de paramétrage de la socket
sin.sin_addr.s_addr = inet_addr("213.248.126.145"); // IP de la socket
sin.sin_family = AF_INET; // type de socket
sin.sin_port = htons(5555); // port de la socket
sock = socket(AF_INET,SOCK_STREAM,0); // création de la socket
bind(sock, (SOCKADDR *)&sin, sizeof(sin)); // association de la socket aux informations précédentes
pthread_t thread; // créatin du thread
pthread_create(&thread, NULL, ecoute(data, &buffer[1000], sock, sin), NULL); ERREUR A CETTE LIGNE !!! // exécuter la fonction en parallèle
closesocket(sock); // fermeture de la socket
WSACleanup(); // libérer les ressources allouées par la fonction WSAStartup()
}
void* ecoute(void* data, char buffer[1000], SOCKET sock, SOCKADDR_IN sin)
{
while (connect(sock, (SOCKADDR *)&sin, sizeof(sin))!= SOCKET_ERROR)
{
int i=recv(sock,buffer,sizeof(buffer), 0);
cout<<"Nombre d'octets recus : "<<i<<endl;
for (int j=0;j<i;j++)
{
cout<<"0x"<<buffer[j]<<" ";
}
}
return NULL;
}
L'erreur est : "invalid conversion from 'void*' to 'void* (*)(void*)'", j'ai essayé de mettre des parenthèses, des '&' ou des '*' un peu partout ^^' mais ça ne marche pas, je n'ai jamais la même erreur, mais celle-ci semble être la principale. J'ai signalé la ligne d'où vient l'erreur.