Se connecter / S'enregistrer
Votre question

La classe diagnostics en C# (erreur)

Tags :
  • call of duty
  • Programmation
Dernière réponse : dans Programmation
8 Octobre 2004 17:09:50

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!!!

Autres pages sur : classe diagnostics erreur

8 Octobre 2004 17:41:55

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
9 Octobre 2004 03:05:51

Slt

Citation :
trouver le ping d'un serveur avec son adresse ip


Cela ne veux pas dire grand chose, soit plus explicite
Contenus similaires
9 Octobre 2004 09:00:11

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!!
9 Octobre 2004 15:55:36

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é
9 Octobre 2004 16:34:29

le lien ne marche pas!!!
9 Octobre 2004 19:12:14

oui je sais faire des socket mais je connais pas les requete pour avoir des information sur le serveur!!!
?????
Merci
9 Octobre 2004 23:33:26

Comme je te l'ai dis il suffit de regarder le code du module serveur d'un NK
10 Octobre 2004 09:49:18

Vous pourriez un peu m'expliquer le code???
SVP
MERci
10 Octobre 2004 13:01:07

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é.


++
10 Octobre 2004 13:04:42

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!!
10 Octobre 2004 13:10:04

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
10 Octobre 2004 14:54:10

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.

++

10 Octobre 2004 15:22:35

j'ai déja essayer j'ai mis ta commande même reponse "^^^^disconnect" sinon la commande???
MERCI
10 Octobre 2004 15:50:48

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.
10 Octobre 2004 16:01:37

bon ok mais tu connais pas des cours sur les sockets alors ???
Merci
10 Octobre 2004 16:06:29

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


++
10 Octobre 2004 16:13:02

Mais c'est winsock, j'arrive pas a utiliser winsock dans SharpDevelop!!!
???
Merci
10 Octobre 2004 17:15:10

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
10 Octobre 2004 18:51:37

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
10 Octobre 2004 20:59:56

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
10 Octobre 2004 22:29:44

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

A force de persevérer, tu as bien avancé ... bravo :p 
10 Octobre 2004 22:35:42

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

c'est quoi la valeur ÿ en hexadecimale??
Merci
10 Octobre 2004 23:08:40

Citation :
"\xFF\xFF\xFF\xFF\x02getstatus\x0a\x00";
15 Octobre 2004 17:54:00

marche pas
15 Octobre 2004 21:30:19

le truc fonctionne mais maintenant je recois comme reponse : "?????"
MERCI
15 Octobre 2004 22:15:40

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
16 Octobre 2004 09:30:55

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 ;-)
16 Octobre 2004 14:31:48

le message que je recois est : ÿÿÿÿdisconnect pourquoi pas ÿÿÿÿgetstatusResponse
????
MERCi
16 Octobre 2004 17:04:36

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^7\sv_maxclients\24\sv_maxPing\350\sv_maxRate\20000\sv_minPing\0\sv_privateClients\2
\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 
16 Octobre 2004 17:47:24

mon code marche ???
Mais ton code il est en C++ non??
Et comment je fais pour changer le titre??
Merci
16 Octobre 2004 18:47:26

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
16 Octobre 2004 19:00:17

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
16 Octobre 2004 19:27:32

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")

16 Octobre 2004 19:42:24

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

Généralement tu mets ca apres les "include"
16 Octobre 2004 19:56:43

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
16 Octobre 2004 20:09:12

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");
}



16 Octobre 2004 20:20:21

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
17 Octobre 2004 12:48:33

Rajoute :
#include <stdlib.h>
17 Octobre 2004 13:39:40

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
17 Octobre 2004 18:41:35

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
17 Octobre 2004 19:18:18

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

++
17 Octobre 2004 19:20:08

Mais il marche pas le code!!
J'arrive pas a le compiler!!!
Merci
17 Octobre 2004 19:50:37

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

17 Octobre 2004 20:10:36

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
17 Octobre 2004 20:58:41

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
17 Octobre 2004 21:00:46

mais c'est quand même la librairie libwsock32.a???
17 Octobre 2004 21:03:20

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
      • 1 / 2
      • 2
      • Dernier
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS