Tom's Guide > Forum > Programmation > La classe diagnostics en C# (erreur)

La classe diagnostics en C# (erreur)

Forum Programmation : La classe diagnostics en C# (erreur)

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bj,
J'essaye de lancer un jeux depuis un programme en C#
mais quand je démarre mon programme le jeux ne sais pas démarrer parce que :
erreur:
Win_error
Couldn't load default.cfg. Make sure Call of Duty is run from the correct folder.
voila
et mon code:
proc = new Process();
ProcessStartInfo processStarInf = new ProcessStartInfo();

processStarInf.FileName = "C:\\Program Files\\Call of Duty\\CoDSP.exe";

proc = Process.Start(processStarInf);


voila merci de votre aide!!!

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

bon pour ça c'est bon mais mnt j'aimerais par exemple:
trouver le ping d'un serveur avec son adresse ip !!
Comment faire??
Merci

Répondre à Riri@IDN

Slt

Citation :

trouver le ping d'un serveur avec son adresse ip



Cela ne veux pas dire grand chose, soit plus explicite

Répondre à 3psilon

j'aimerais avoir des information comme ping,nb de joueur sur des serveurs de jeux (de call of duty) mais je sais pas comment faire !!
Merci de m'aider!!

Répondre à Riri@IDN

Slt,

Jette un oeil sur

http://www.nuked-klan.org/

Ca sera du php, mais le principe en C est le meme.
Tu ouvres une socket, et suivant le jeu il faut envoyer les bonnes commandes.

Ensuite il te restera à parser la réponse du serveur.


Edit : ok c modifié

Répondre à 3psilon

le lien ne marche pas!!!

Répondre à Riri@IDN

oui je sais faire des socket mais je connais pas les requete pour avoir des information sur le serveur!!!
?????
Merci

Répondre à Riri@IDN

Comme je te l'ai dis il suffit de regarder le code du module serveur d'un NK

Répondre à 3psilon

Vous pourriez un peu m'expliquer le code???
SVP
MERci

Répondre à Riri@IDN

Slt,

Je ne suis pas un grand pro du php et du NK neanmoins j'ai vite fais regardé.

Je suis parti pour trouver la commande pour Quake.
Dans le module serveur j'ai trouvé 2 fichiers interessant.

q3a.php
gsQuery.php


Dans q3a.php, il existe une classe q3a et une méthode "query_serveur'". Dans cette méthode se trouve la commande pour avoir le statut du serveur qui est :
"\xFF\xFF\xFF\xFF\x02getstatus\x0a\x00";

Ensuite cette commande est envoyé au serveur de jeu par le bias de _sendCommand qui se trouve ds le ficher gsQuery.php qui lui utilise "fsockopen" qui permet d'ouvrir une socket et d'envoyer une commande.

Reste à trouver la commande à envoyer à un serveur de jeu Call of Duty, car je ne l'ai pas trouvé.


++

Répondre à 3psilon

Merci,
mais voila j'ai trouver un fichier en VB qui pour trouver les information(vers un server COD) envoyait "ÿÿÿÿgetstatus", donc j'ai essayer j'ai fait une socket j'ai mis l'ip et le port d'un serveur puis comment reponse je recois "^^^^disconnect", et c'est tout le temps comme ca même si j'envoi "status" c'est la même chose(le fichier est ici )
Donc ????
Merci a toi!!

Répondre à Riri@IDN

et je sais que le protocole est "UDP" voici mon code pour l'instant :
using System;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;

class h
{
public static void Main()
{
string resultat;
char[] buffer = new char[1024];
UdpClient client = null;
int clientport = 22890;
int serveurport = 22890;
client = new UdpClient(clientport);
string serveurhost = "80.231.0.10";
string req = "ÿÿÿÿgetstatus";
byte[] rq = System.Text.Encoding.ASCII.GetBytes( req.ToCharArray() );
client.Send(rq, rq.Length, serveurhost, serveurport);
IPEndPoint ip = null;
//reception
byte[] r = client.Receive(ref ip);

//conversion
resultat = System.Text.Encoding.ASCII.GetString(r);

if(resultat=="ÿÿÿÿstatusResponse" )
{
Console.WriteLine("Bravo" );
Console.WriteLine("{0}",resultat);
}
else
{
Console.WriteLine("Le serveur est Ofline" );
Console.WriteLine("{0}",resultat);
}

//en VB :
//Winsock2.RemoteHost = ip; // Spécifie au Winsock l'adresse du serveur
// Winsock2.RemotePort = port; // Spécifie au Winsock le port du serveur
//Winsock2.SendData ("ÿÿÿÿgetstatus" ); // Envoi de la requête avec la commande ""ÿÿÿÿgetstatus" qui permet d'avoir les infos des serveurs COD
}

}

donc normalement si le serveur est connecter il doit renvoyer ÿÿÿÿgetstatusResponse mais c'est toujour la même chose "^^^^deconnect"
Merci

Répondre à Riri@IDN

Re,

je n'ai pas installé VB, en tt cas, la méthode est la bonne, connexion + envoi de la commande.

Vérifie bien que la commande envoyé est la bonne, car un seul caractère manquant/incorrect peut causer des problemes.

tente de mettre directement ce que j'ai écrit plus haut avec les caracteres hexa.

++

Répondre à 3psilon

j'ai déja essayer j'ai mis ta commande même reponse "^^^^disconnect" sinon la commande???
MERCI

Répondre à Riri@IDN

Je viens de regarder le code du vb est en effet les commandes ont l'air bonnes et les connexions aussi.
De plus les commentaires prouvent que cela fonctionne.

Donc cela viens d'un chez toi et de ton code.

Je ne connais pas le C# mais peut etre que tu as un blem avec la socket ? en tt cas je n'ai pas plus d'explication a te donner, dsl :p

Bon courage.

Répondre à 3psilon

bon ok mais tu connais pas des cours sur les sockets alors ???
Merci

Répondre à Riri@IDN

Si mais seulement en win32 et en anglais (assez imbuvable mais tres complet, faut prendre le tps :p )

Voici :
Network
Network-Exemple

Et sinon un ti pdf en francais:
Socket.pdf


++

Répondre à 3psilon

Mais c'est winsock, j'arrive pas a utiliser winsock dans SharpDevelop!!!
???
Merci

Répondre à Riri@IDN

En faite je pense que c'est la commande qui n'est pas bonne parce que quoi que je met j'ai la même reponse "^^^^disconnect"!!
Donc...
MErci

Répondre à Riri@IDN

non voila j'ai trouvé un autre script php code pour la commande est ici :
fwrite($s_con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00));

Est-ce que quelqu'un peut me mettre ca en C#??
Merci

Répondre à Riri@IDN

bon j'ai trouvé mon erreur :
byte[] rqq = Encoding.ASCII.GetBytes("ÿÿÿÿgetstatus".ToString());
Console.WriteLine("{0}",Encoding.ASCII.GetString(rqq,0,13));

en reponse je recoit ????getstatus a la place de ÿÿÿÿgetstatus !!!
Donc comment je dois faire pour que ce soit juste???
Merci

Répondre à Riri@IDN

Je pense qu'il faut que tu travailles avec les caracteres hexadecimaux

A force de persevérer, tu as bien avancé ... bravo :p

Répondre à 3psilon

et quand je peux faire pour que :
byt[0] = //caracter hexadecimale ÿ

c'est quoi la valeur ÿ en hexadecimale??
Merci

Répondre à Riri@IDN

Citation :

"\xFF\xFF\xFF\xFF\x02getstatus\x0a\x00";

Répondre à 3psilon

le truc fonctionne mais maintenant je recois comme reponse : "?????"
MERCI

Répondre à Riri@IDN

Bon j'ai bien examiné la reponse et c'est la même chose mais sauf ke c'est des autres caractère ca fait aussi disconnect!!!
Merci

Répondre à Riri@IDN

voila le code que j'ai fait maintenant :



using System;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text;

class h
{
public static void Main()
{
string resultat;
StringBuilder texte = new StringBuilder();
texte.Insert(0,"ÿÿÿÿgetstatus",1);
EndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1" ), 11000);
byte[] rqq = Encoding.Unicode.GetBytes("\xFF\xFF\xFF\xFFgetstatus" );
Console.WriteLine("{0}",Encoding.Unicode.GetString(rqq,0,26));
byte[] req = new byte[1000];
UdpClient client = null;
int clientport = 28960;
int serveurport = 28960;
client = new UdpClient(clientport);
string serveurhost = "210.104.200.20";
client.Send(rqq,26, serveurhost, serveurport);
IPEndPoint ip = null;
//reception
byte[] r = client.Receive(ref ip);
//conversion
resultat = System.Text.Encoding.Unicode.GetString(r);
if(resultat=="ÿÿÿÿstatusResponse" )
{
Console.WriteLine("Bravo" );
Console.WriteLine("{0}",resultat);
}
else
{
Console.WriteLine("Le serveur est Ofline" );
Console.WriteLine("{0}",resultat);
}


}

}
//
Pcq la je commence en avoir vraiment marre et si quelqu'un savait l'essayer chez soi pour voir si ils ont la même reponse!!!
MERCI ;-)

Répondre à Riri@IDN

le message que je recois est : ÿÿÿÿdisconnect pourquoi pas ÿÿÿÿgetstatusResponse
????
MERCi

Répondre à Riri@IDN

Re,

Bon je viens de tester vite fais en win32 et cela fonctionne.

Concernant ton code, il y a un truc qui me chiffone c ton test if(resultat=="ÿÿÿÿstatusResponse" ) car résultat ne vas contenir seulement "ÿÿÿÿstatusResponse" mais toute la chaine comprenant les stats.

Voici l'extrait du code que j'ai fait, bon c tres sommaire et tres mal fais mais c t pour tester :

SOCKET s;
s = socket(AF_INET,SOCK_DGRAM,0);
struct sockaddr_in sain;
sain.sin_family = AF_INET;
sain.sin_port = htons(atoi("28960" ));
sain.sin_addr.s_addr = inet_addr("195.149.21.88" );

connect(s, (struct sockaddr *) &sain, sizeof(sain));

char clnt[512];
char FAR buf[1024];
strcpy(clnt,"\xFF\xFF\xFF\xFF\x02getstatus\x0a\x00" );

send(s, clnt, strlen(clnt), 0);
recv(s,buf,strlen(buf),MSG_PEEK);

cout << buf << endl;


Et a la sortie voila ce que contient buf :
statusResponse
\g_gametype\sd\gamename\CoD:United Offensive\mapname\mp_railyard\protocol\21\scr_friendlyfire\1\scr_
killcam\0\shortversion\1.41\sv_allowAnonymous\0\sv_floodProtect\1\sv_hostname\^1C^3EA^1L TW REALISMO
www.cealweb.net^7sv_maxclients24sv [...] teClients2
\sv_punkbuster\0\sv_pure\1\pswrd\0\mod\1
23 106 "^1[C^3EA^1L]^7May.Koko CG"
36 105 "^2[M^3D^1C]^3*****^5Infolux"
1 112 "^1[C^3EA^1L]^7Sgto1.LiMbO ^1GCF"
28 83 "Headshot"


++


Edit :
il serait ptet judicieux de reformater le titre du topic car cela ne correpond pas trop au sujet :p

Répondre à 3psilon

mon code marche ???
Mais ton code il est en C++ non??
Et comment je fais pour changer le titre??
Merci

Répondre à Riri@IDN

Citation :


mon code marche ???


Je sais pas, je ne connais pas le C#

Citation :

Mais ton code il est en C++ non??


Non c'est du C, outre le cout

Citation :

Et comment je fais pour changer le titre??


Aucune idée

Répondre à 3psilon

alors pourquoi tu mets
tu as dis "j'ai essayer vite en Win32 et ca marche " sinon pour ton code j'ai pas la socket.h" donc je sais pas le compiler!!
MERCI

Répondre à Riri@IDN

Et bien, j'ai fais un programme en C (et non C#) en utilisant winsock.
Je l'ai fait sous VS6, donc je ne sais pas si sous le Sharp cela fonctionnera.

Pour les include :
#include <winsock.h>

et il faudra certainement linker la lib
#pragma comment(lib, "ws2_32.lib" )

Répondre à 3psilon

je dois mettre ca ou le "#pragma comment(lib, "ws2_32.lib" )"???
MERCI
(j'ai Dev-C++)

Répondre à Riri@IDN

Généralement tu mets ca apres les "include"

Répondre à 3psilon

bai voila j'ai fait ça sou devc++:
#include <iostream.h>
#include <stdlib.h>
#include <winsock.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib" )
main()
{

SOCKET s;
s = socket(AF_INET,SOCK_DGRAM,0);
struct sockaddr_in sain;
sain.sin_family = AF_INET;
sain.sin_port = htons(atoi("28960" ));
sain.sin_addr.s_addr = inet_addr("195.149.21.88" );

connect(s, (struct sockaddr *) &sain, sizeof(sain));

char clnt[512];
char FAR buf[1024];
strcpy(clnt,"\xFF\xFF\xFF\xFF\x02getstatus\x0a\x00" );

send(s, clnt, strlen(clnt), 0);
recv(s,buf,strlen(buf),MSG_PEEK);

cout << buf << endl;




system("PAUSE" );
return 0;
}



et il mette un truc avec linker et output!!
MERCI

Répondre à Riri@IDN

Vla ce que ca donne chez moi :




#include <winsock.h>
#include <string.h>
#include <stdio.h>


#pragma comment(lib, "ws2_32.lib" )


void main(int argc, char *argv[]) {

printf("\nCoD Checker -- " );

char strIp[16]={"195.149.21.88"};
char strPort[6]={"28960"};
char clnt[1024];
char buf[1024];


WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &wsaData))
{
printf("Erreur WSAStartup\n" );
system("PAUSE" );
exit(2);
}



SOCKET s;
s = socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
printf("Erreur Socket : \n" );
system("PAUSE" );
exit(2);
}
else
printf("Socket Ready : \n\n" );



struct sockaddr_in sain;
sain.sin_family = AF_INET;
sain.sin_port = htons(atoi(strPort));
sain.sin_addr.s_addr = inet_addr(strIp);


printf("Connexion to %s:%s ...",strIp,strPort);
if(connect(s, (struct sockaddr *) &sain, sizeof(sain))==SOCKET_ERROR)
{
printf("...failed\n" );
system("PAUSE" );
exit(2);
}
printf("... Succes\n\n" );

printf("Command Send ..." );


strcpy(clnt,"\xFF\xFF\xFF\xFF\x02getstatus\x0a\x00" );

if(send(s, clnt, strlen(clnt), 0)==SOCKET_ERROR)
{
printf("... Failed\n" );

system("PAUSE" );
exit(2);
}
printf("... Succes\n\n" );

printf("\nReceive :\n\n" );
recv(s,buf,strlen(buf),MSG_PEEK);
printf("%s\n",buf);
printf("\nEnd Receive.\n\n" );


if(closesocket(s)==SOCKET_ERROR)
{

system("PAUSE" ) ;
exit(2) ;
}

WSACleanup();

system("PAUSE" );
}



Répondre à 3psilon

il me mette comme erreur :
46 c:\docume~1\h\bureau\progra~1\untitl~1.cpp
implicit declaration of function `int atoi(...)'
25 c:\docume~1\h\bureau\progra~1\untitl~1.cpp
implicit declaration of function `int system(...)'
!!!!!!!!!!
Merci

Répondre à Riri@IDN

Rajoute :
#include <stdlib.h>

Répondre à 3psilon

bon ca marche toujours pas, toujours quelque chose avec le linker, c'est pas grave !! (merci)
sinon pour mon problème quelqu'un a encore une idée???
MERCI

Répondre à Riri@IDN

bon vous savez pas faire le code le plus simple en C : donc juste :
création de socket en udp
envoi au serveur la commande :...
et Recois la réponse et l'affiche a l'écran avec wsock2!!!!
MERCI

Répondre à Riri@IDN

Citation :

bon vous savez pas faire le code le plus simple en C : donc juste :
création de socket en udp
envoi au serveur la commande :...
et Recois la réponse et l'affiche a l'écran avec wsock2!!!!



erf ... ce que j'ai fait ne peux pas etre plus simple
Création Socket -- Connexion -- Envoi Commande -- Affichage réception socket.

Personnellement, je pense avoir fait le tour de la question

++

Répondre à 3psilon

Mais il marche pas le code!!
J'arrive pas a le compiler!!!
Merci

Répondre à Riri@IDN

Bon,

je viens d'installer DevCpp.

il faut que tu vires les #pragma et que dans les options du projet ->Parametres -> Editeurs de lien
rajouter la lib pour devcpp qui est libwsock32.a

Ensuite dans mon code, juste changer ceci:
recv(s,buf,strlen(buf),MSG_PEEK);
par
recv(s,buf,1024,MSG_PEEK);


Manant cela devrait fonctionner

Répondre à 3psilon

voila j'ai fait project => new project (C project)
puis j'ai rajouter dans le linker : libwsock32.a
et voici mon code :
#include <winsock.h>
#include <string.h>
#include <stdio.h>





void main(int argc, char *argv[]) {

printf("\nCoD Checker -- " );

char strIp[16]={"195.149.21.88"};
char strPort[6]={"28960"};
char clnt[1024];
char buf[1024];


WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &wsaData))
{
printf("Erreur WSAStartup\n" );
system("PAUSE" );
exit(2);
}



SOCKET s;
s = socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
printf("Erreur Socket : \n" );
system("PAUSE" );
exit(2);
}
else
printf("Socket Ready : \n\n" );



struct sockaddr_in sain;
sain.sin_family = AF_INET;
sain.sin_port = htons(atoi(strPort));
sain.sin_addr.s_addr = inet_addr(strIp);


printf("Connexion to %s:%s ...",strIp,strPort);
if(connect(s, (struct sockaddr *) &sain, sizeof(sain))==SOCKET_ERROR)
{
printf("...failed\n" );
system("PAUSE" );
exit(2);
}
printf("... Succes\n\n" );

printf("Command Send ..." );


strcpy(clnt,"\xFF\xFF\xFF\xFF\x02getstatus\x0a\x00" );

if(send(s, clnt, strlen(clnt), 0)==SOCKET_ERROR)
{
printf("... Failed\n" );

system("PAUSE" );
exit(2);
}
printf("... Succes\n\n" );

printf("\nReceive :\n\n" );
recv(s,buf,1024,MSG_PEEK);
printf("%s\n",buf);
printf("\nEnd Receive.\n\n" );


if(closesocket(s)==SOCKET_ERROR)
{

system("PAUSE" ) ;
exit(2) ;
}

WSACleanup();

system("PAUSE" );
}

et j'ai comme erreur :
21 untitled1.c
(Each undeclared identifier is reported only once
21 untitled1.c
for each function it appears in.)
22 untitled1.c
`wsaData' undeclared (first use in this function)
31 untitled1.c
parse error before `s'
32 untitled1.c
`s' undeclared (first use in this function)
44 untitled1.c
parse error before `struct'
45 untitled1.c
`sain' undeclared (first use in this function)
46 untitled1.c
`strPort' undeclared (first use in this function)
47 untitled1.c
`strIp' undeclared (first use in this function)
62 untitled1.c
`clnt' undeclared (first use in this function)
74 untitled1.c
`buf' undeclared (first use in this function)
9 untitled1.c
warning: return type of `main' is not `int'
.... et encore
pourquoi???
MErci

Répondre à Riri@IDN

A vrai dire, je ne sais pas pourquoi ca deconne chez toi.


Chez moi j'ai DevCpp 4.9.8.0

J'ai crée un projet "Console Application" en type de Projet "Projet C".

J'ai copié/collé le fichier C de VS, j'ai viré les pragma et j'ai linké la lib "libws2_32.a"

et cela fonctionne.

Dsl mais je ne connais pas devcpp donc j'en sais pas plus.

Attend ptet un pro du dev ss devcpp

Répondre à 3psilon

mais c'est quand même la librairie libwsock32.a???

Répondre à Riri@IDN

tes sur que tout est bien dans le code???
et c'est quand même DevC++
Merci
donc moi j'ai des erreur et mon linker il dise :
gcc: c:\documents and settings\h\bureau\programmation\untitled1.o: No such file or directory
gcc: file path prefix `C:\DEV-C_~1\Bin\' never used
Merci

Répondre à Riri@IDN
Page Précédente
1 2
Tom's Guide > Forum > Programmation > La classe diagnostics en C# (erreur)
Aller à :

Il y a 477 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens