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.