Page 2 sur 2
Publié : mar. 20/déc./2005 14:40
par Anonyme
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 garde

merci.)
Publié : mar. 20/déc./2005 14:45
par gansta93
Cpl.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 garde

merci.)
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. !:-D
Bon courage et merci encore.

Publié : mar. 03/janv./2006 22:12
par popstatic
Bonjour!
pourquoi en UDP?
UDP
Publié : ven. 21/avr./2006 0:51
par Subelrim
Bonsoir,
J'ai dl ton archive CPL.Bator, les EXE sont impecs mais les .pb me collent une erreur disant que opensocket( ) n'est pas une fonction.
je pense que j'ai pas bien placé la dll ?
si tu peux éclairer ma chtite lanterne, ce serait bien
J'ai commencé un prog multijoueurs en réseau mais tcp rame trop ! je voudrais bien essayer en udp (selon les conseils de Fred).
Publié : ven. 21/avr./2006 1:29
par LeCyb
La version 4 gère l'UPD, ce qui fait que cette librairie me semble un peu obsolète.
J'ai pas dit que c'était mal fait !
Je dis juste que ça fait "il me semble" doublon.
Publié : ven. 21/avr./2006 8:05
par Subelrim
bah oui mais même en lisant les infos UDP sur wiki , c'est un peu pauvre en exemples d'utilisation.

Publié : ven. 21/avr./2006 8:37
par Anonyme
heureusement que je suis curieux, la notification automatique de fonctionne pas super
@popstatic : Car quand je l'ai faite, pb ne gerais pas l'UDP.
@Subelrim : je suis de l'avis de LeCyb, la lib est obselète. car avec la bêta 4 il est possible de choisir le mode. Quand à la rapidité du Tcp/ip, je ne vois pas ou tu peut avoir de gros problèmes, a mon avis sans vouloir te vexé, tu dois mal gerer l'envois ou la reception des messages.
je ferais certainement un post la dessus
@++
Publié : ven. 21/avr./2006 8:41
par Anonyme
D'ailleurs pour ceux que cela interesse voila la source en c++ :
je m'étais appuyer grâce à un site , mais j'ai plus le lien
il est facilement convertible en TCP/IP
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;
}
Publié : ven. 21/avr./2006 9:26
par Subelrim
j'ai passé l'âge de me vexer pour si peu

(j'ai commencé à programmer sur Oric dès sa sortie et j'ai pondu quelques HIT il y a une vingtaine d'années...
Il est probable que mon code comporte quelques erreurs ! Cependant, cela fait plusieurs mois que je refait complètement les routines clients serveur avec ou sans thread en épurant au maximum mais sans parvenir à la fluidité souhaitée. bref sa rame ...
Note que c'est beaucoup plus fluide que le code laissé par "le petit scarabaie

" sur un post dans une autre rubrique network.
Dès que le temps me le permet, je dépose les routines de base sur lesquelles je sèche.