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
Protocole UDP
- 
				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.)
			
			
									
									
						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.)
Bon courage et merci encore.
UDP
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).
			
			
									
									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).
Et voila...
						- 
				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
 
@++
			
			
									
									
						@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
@++
- 
				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
 
			
			
													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;
}
					Dernière modification par Anonyme le ven. 21/avr./2006 11:28, modifié 1 fois.
									
			
									
						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.
			
			
									
									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
Dès que le temps me le permet, je dépose les routines de base sur lesquelles je sèche.
Et voila...