Ayuda con codigo en C (no me ejecuta un for y necesito ayuda)

Iniciado por Søra, 21 Mayo 2010, 22:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Søra

.wtf es la extension que tiene el realmlist del world of warcraft. Muchas gracias littlehorse lcon eso ya me has solucionado medio proyecto pero aun asi como ya e escrito no cosigo introducir varios realmlist en el archivo para luego cojerlos cuando los necesite y meterlos en el realmlist de verdad.

A demas otra duda desde C se puede hacer un ping porque lo necesitaria(en google no sale nada).

Uso linux asi que la biblioteca esa que ace que se acepten comandos de msdos no creo que funcione y este codigo:

if (0 == system("ping -w 2 192.168.0.2))

no se si es solo para C++ o solo para C.


Saludos Søra.

edito: He leido que se puede acer mandando paquetes ICMP pero ese metodo me parece muy costoso si hubiera alguno mas rapido....





Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.

Horricreu

#11
Gracias por la aclaración, pero ten en cuenta que los comandos de la función system() pueden no funcionar en algún SO ;)

Saludos :P

Littlehorse

Eso debería funcionar perfectamente siempre y cuando el tamaño de la cadena sea el máximo posible y tengas en cuenta los saltos de linea que fgets toma como validos y asegurarte que las cadenas estén finalizadas con un NULL.
En caso que quede contenido restante en el buffer, hay un post sobre ello unas lineas mas abajo.

Puedes hacer un ping de esa forma, pero obviamente tendrás que o bien redireccionar la salida a tu programa o hacia algún archivo en pos de poder analizarlo correctamente.
Y si, podes usar sockets también, pero supongo que no te vas a tomar el trabajo de aprenderlos para hacer un launcher.
Obviamente si pretendes hacer el ping de esa forma es conveniente utilizar un buffer (system(buff)) y ese buffer formatearlo previamente con tu comando y con el parámetro de dicho comando. sprintf por ejemplo.

Usa el buscador que hay información sobre todo lo que necesitas.

Saludos


An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Søra

#13
Littlehorse en serio necesito hacer todo eso lo que yo quiro es si el servidor responde al ping pues se pone ese realmlist si no se comprueba el siguiente algo como:

if (system("ping -w 2 192.168.0.2") == 0);
// hacer ping al siguiente realmlist
if (system("ping -w 2 192.168.0.2") == 1);
//sustituir el realmlist por este


O tengo que
Citarredireccionar la salida a tu programa o hacia algún archivo en pos de poder analizarlo correctamente






Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.

Horricreu

#14
Cita de: Søra en 21 Mayo 2010, 23:48 PM
Littlehorse en serio necesito hacer todo eso lo que yo quiro es si el servidor responde al ping pues se pone ese realmlist si no se comprueba el siguiente algo como:

if (system("ping -w 2 192.168.0.2") == 0);
// hacer ping al siguiente realmlist
if (system("ping -w 2 192.168.0.2") == 1);
//sustituir el realmlist por este


O tengo que
Citarredireccionar la salida a tu programa o hacia algún archivo en pos de poder analizarlo correctamente



Te falta cerrar el primer if() correctamente :silbar:

Saludos :P

PD: mientras vosotros dos tenéis esta charla, yo voy dando consejos prácticos como el mensaje de antes y este. Que no se me ignore, que no lo digo en broma.

Søra

No te ignoroo!!! solo que como tus comentarios son practicos cuando veo mi fallo aplico tu solucion y sigo es mas agradezco tus aportes tanto como los de littlehorse  :)

Saludos Søra.





Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.

Littlehorse

#16
@Søra

Citar
Cuando te refieres a existir quieres decir que esta encendido el servidor no? que responde al ping?

Claro, pero es el único dato que obtendrás. También ten en cuenta que devolverá 0 en caso que el host exista pero devolverá un valor distinto de 0 en caso contrario, lo cual no siempre sera 1. Arreglado eso funcionaria en la mayoría de los sistemas pero por supuesto no es una solución estrictamente portable ni la mas adecuada, pero seguramente es la mas rápida.

Igualmente lo del buffer para system tendrás que hacerlo si o si en caso que quieras hacer ping en múltiples host obtenidos desde el usuario.

Citarotra duda a la hora de abrir un archivo puedo indicar una ruta por ejemplo:

Si.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Søra

Cuando te refieres a existir quieres decir que esta encendido el servidor no? que responde al ping?

otra duda a la hora de abrir un archivo puedo indicar una ruta por ejemplo:

FILE *pf
pf = fopen ("C:\\Archivos de programa\World of warcraft\~\realmlist.wtf","w");


Saludos Søra.







Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.

Horricreu

#18
Cita de: Søra en 22 Mayo 2010, 00:02 AM
Cuando te refieres a existir quieres decir que esta encendido el servidor no? que responde al ping?

otra duda a la hora de abrir un archivo puedo indicar una ruta por ejemplo:

FILE *pf
pf = fopen ("C:\\Archivos de programa\World of warcraft\~\realmlist.wtf","w");


Saludos Søra.




Vuelvo otra vez :xD Está mal, en C/C++ si quieres escribir una barra inversa, debes escribir dos barras inversas y, no lo haces bien:

FILE *pf
pf = fopen ("C:\\Archivos de programa\\World of warcraft\\~\\realmlist.wtf","w");


Saludos :P

PD: no se si se puede escribir espacios dentro de una ruta de fichero en este caso :huh:

Littlehorse

CitarPD: no se si se puede escribir espacios dentro de una ruta de fichero en este caso  :huh:

Si, se puede. Y también se puede usar /.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.