
Tu sais pour l'arborescence, tu m'aurait juste dit, "ton archive est mal organisé, faire des copier collé me casse les c..." j'aurais compris ausitot ^^ fallais pas te prendre la tête à refaire l'archive (maintenant que c'est fait je le garde

Lol... pas de problème, c les vacances, et puis... les futilitées de ce genre, si je peux te les éviter, autant le faire. !:-DCpl.Bator a écrit :J'ai découvert grace à toi le dossier librarySDK hier![]()
Tu sais pour l'arborescence, tu m'aurait juste dit, "ton archive est mal organisé, faire des copier collé me casse les c..." j'aurais compris ausitot ^^ fallais pas te prendre la tête à refaire l'archive (maintenant que c'est fait je le gardemerci.)
Code : Tout sélectionner
//************************
//* WINSOCK FUNCTION UDP *
//************************
//Includes
#include <winsock2.h> // pour les fonctions socket
// Les librairies
#pragma comment(lib,"ws2_32.lib")
const float DLL_VERSION = 1.0;
//Declaration des Procédures
extern "C" __declspec(dllexport) int InitWinsock();
extern "C" __declspec(dllexport) int OpenSocket();
extern "C" __declspec(dllexport) int BindSocket(int Port,int socketid);
extern "C" __declspec(dllexport) char* ReceiveData(int socketid);
extern "C" __declspec(dllexport) int SendData(const char* data, const char* IpTo , int PortTo , int socketid);
extern "C" __declspec(dllexport) int CloseSocket(int socketid);
extern "C" __declspec(dllexport) int ExitWinsock();
// Définition des variables
WSADATA initialisation_win32; // Variable permettant de récupérer la structure d'information sur l'initialisation
int erreur; // Variable permettant de récupérer la valeur de retour des fonctions utilisées
int tempo; // Variable temporaire de type int
int nombre_de_caractere; // Indique le nombre de caractères qui a été reçu ou envoyé
char buffer[65535]; // Tampon contenant les données reçues ou envoyées
SOCKET id_de_la_socket; // Identifiant de la socket
SOCKADDR_IN information_sur_la_source;
SOCKADDR_IN information_sur_la_destination; // Déclaration de la structure des informations lié au serveur
//Initialisation de Winsock
__declspec(dllexport) int InitWinsock()
{
int InitStatus;
int Retour;
InitStatus=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
if(InitStatus!=0)
Retour=WSAGetLastError();
else
Retour=1;
return Retour;
}
// Ouverture de la socket
__declspec(dllexport) int OpenSocket()
{
int Retour;
id_de_la_socket=socket(AF_INET,SOCK_DGRAM,0);
if (id_de_la_socket==INVALID_SOCKET)
Retour = WSAGetLastError();
else
Retour = id_de_la_socket;
return Retour;
}
//Lie le socket à un port pour l'écoute.
__declspec(dllexport) int BindSocket(int Port,int socketid)
{
int StartServer;
int Retour;
information_sur_la_source.sin_family=AF_INET;
information_sur_la_source.sin_addr.s_addr=INADDR_ANY; // Ecoute sur toutes les IP locales
information_sur_la_source.sin_port=htons(Port); // Ecoute sur le port
StartServer=bind(socketid,(struct sockaddr*)&information_sur_la_source,sizeof(information_sur_la_source));
if (StartServer!=0)
Retour=WSAGetLastError();
else
Retour=1;
return Retour;
}
//Reception de données
__declspec(dllexport) char* ReceiveData(int socketid)
{
tempo=sizeof(information_sur_la_source); // Passe par une variable afin d'utiliser un pointeur
nombre_de_caractere=recvfrom(socketid,buffer,1515,0,(struct sockaddr*)&information_sur_la_source,&tempo);
buffer[nombre_de_caractere]=0; // Permet de fermer le tableau après le contenu des data, car la fonction recvfrom ne le fait pas
return buffer;
}
__declspec(dllexport) int SendData(const char* data, const char* IpTo , int PortTo, int socketid)
{
int Retour;
information_sur_la_destination.sin_family=AF_INET; // Indiquez l'utilisation d'IPV4
information_sur_la_destination.sin_addr.s_addr=inet_addr(IpTo); // Indiquez l'adresse IP de votre serveur
information_sur_la_destination.sin_port=htons(PortTo);
strcpy(buffer,data); // Copie la chaine de caractère dans buffer
nombre_de_caractere=sendto(socketid,buffer,strlen(buffer),0,(struct sockaddr*)&information_sur_la_destination,sizeof(information_sur_la_destination));
if (nombre_de_caractere==SOCKET_ERROR)
Retour = WSAGetLastError();
else
Retour = 1;
return Retour;
}
// Fermeture de Winsock
__declspec(dllexport) int ExitWinsock()
{
int Exit;
int Retour;
Exit=WSACleanup(); // A appeler autant de fois qu'il a été ouvert.
if (Exit!=0)
Retour = 0;
else
Retour = 1;
return Retour;
}
// Ferme le socket
__declspec(dllexport) int CloseSocket(int socketid)
{
int Close;
int Retour;
Close=closesocket(socketid);
if (Close!=0)
Retour = WSAGetLastError();
else
Retour = 1;
return Retour;
}