Mi primer programa serio, necesito ayuda. ;)

n1x3r

Hola, me acabo de plantear hacer algo serio, es un programa que puede ayudar a mucha gente, lo tengo en la cabeza, solo tengo que pasarlo al ordenador, y hay esta el problema, me falta base (normal, no llevo mas de 4 meses con programación) y me gustaría que vosotros, gurus del C++ me ayudaseis.
El programa estará en C++ visual, ya tengo creada parte de el pero me atasque en 2 cosas muy complejas para mi, pero isi & fast para algunos de vosotros, lo que necesito por ahora es:


-Crear un servidor FTP, usuario anónimo y que comparta todo lo que esta en la carpeta del programa

-Poder cambiar mi IP, mascara, y Puerta de enlace haciendo un clic en un botón

Por ahora solo es eso, ya según avance iré poniendo mas y mas cosas.

Muchas gracias a todos, un saludo.

EDIT:

El servidor ftp a ser posible muy muy basico, tanto como compartir la carpeta del programa y que pueda acceder cualquiera.

EDIT 2: LEE A #15 gracias!! ^

mikail

y porque podrà ayudar a mucha gente?

que tienes el esquema hecho?

r2d2rigo

Pues hijo... buscate una libreria de ftp de codigo libre... que te va a resolver mucho. O eso o te curras tu propio protocolo, clarostá.

Y lo de la ip, pues eso lo unico que podrias hacer es flushear la conexion, para que la operadora telefonica te la reasigne. Asi que no se, por lo que estas dando a entender es una idea un poco... bizarra.

PD: en estas webs seguro que encuentras alguna referencia...

http://www.codeproject.com/
http://www.codeguru.com/
http://www.programmersheaven.com/

kas

En cuato al FTP, como te dicen, es mejor que buesques en esas web de referencia una libreria de codigo abierto.

En cuanto al tema de la IP, sinceramente no se contra que API deveras trabajar. Pero recuerda, solo podras cambiar la IP del ordenador en el que el programa se esta ejecutando.

Por otra parte, te recomiendo C#, muucho mas prectico en todos los sentidos, y sin punteros.

-nazgul-

Poder cambiar mi IP, mascara, y Puerta de enlace haciendo un clic en un botón

Hombre en Windows eso se hace fácilmente, son 4 o 5 clicks pero tampoco es para tanto.

Lo de flushear/reasignar que dicen aquí arriba se hace simplemente con ipconfig /renew

kas

Tambien puedes llamar al ipconfig y redireccionar la salida para, mediante unas chulas funciones de reconocimiento de strings, sacar tu los datos.

En cuanto al /renew, eso solo funciona si hay un DHCP, pero si tienes la IP fija (en Mis sitiso de red / Conexion de area local / Propiedades / Protocolo TCP IP / Propiedades) no sirve. A parte de que esextremadamente lento un /renew, almenos en mi opinion.

Yo tengo por ahi un programa que hice una vez, pero para el route. Llamaba al programa route /print y le redireccionaba la salida estandar hacia un fichero en disco. Luego como yo sabia donde tenia que ir a buscar los datos, con 4 o 5 funciones de parseo de strings, sacaba los datos que me interesaban y los listaba.

Ademas añadi el /add y el /remove si mal no recuerdo.

Esto lo hice porque un coelga tien ADSL y cable en su casa, y entonces en la misma maquina si tiene un FTP o un p2p puesto, sale por ADSL, pero en cuanto juega al Q4 con el clan, se añade la IP por la puerta de enlace del cable, y el juega sale por cable. Bajando asi del FTP o p2p al maximo de la adsl, y jugando con 20 de ping al Q4 :D

Esto yo lo hice en su momento a mano, cuando tenia RDS64 y ADSL 256, y era eso, edonkey a pilon y el Counter a 30 de ping :)

-nazgul-

Es que si tienes IP fija no se puede renovar, otra cosa es que la cambies manualmente.

De todas formas todo eso se puede hacer fácilmente desde las propiedades de la conexión.

n1x3r

Con lo de la ip me refiero a hacerlo como si la cambiase manualmente, osea dar unos nuevos valores, no importa si estoy en una lan con DHCP o tengo ip fija o lo que sea, es simplemente poder cambiar la ip, mascara y PE de mi adaptador de red.

Referente a lo del FTP, vale si, usar unas librerias :S en mi vida eh usado unas librerias que no sean las q tiene Borland c++ builder 6, si pudieseis hacerme unos pasos a seguir o sabeis de algun manual para tontos que explique el proceso, lo agradeceria :)

EDIT: veamos, necesito cambair los parametros de las IP para el servidor FTP

Am y se me olvidaba, ademas de que se cambie las ip necesito una forma para saber si las IP se cambiaron bien.

javithelong

Mi no comprende el propósito de todo esto

billie

ya hay programas para cambiar la ip con un solo botón y tal :b se usan mucho para rapidshare, megaupload.. etc

suerte con el proyecto

n1x3r

Vamos a ver... estas dos cosas es uno de los 5 pasos que se necesitan para hacerlo, ni teneis que saber para que es, ni pensad encosas supermegacomplejas, solo necesito cambair la ip y poner un servidor FTP, lo que yo quiero es incluirlo todo en un simple programa :/

PD: Si no podeis, quereis o sabeis ayudarme dedidme un foro donde si quieran, puedan y sepan hacerlo.

javithelong

Mira nen, si no das más información de lo que pretendes hacer, es imposible ayudarte, asi de claro. Yo no se cuanto sabe la gente aquí de programación, pero lo que soy yo, probablemente no tenga ningún problema para programarte lo que quieras en C.

Ahora, si no quieres decir lo que quieres hacer, y te explicas como el culo, pos tio, ayá tu. En cualquier foro (y más si buscas foros más avanzados) van a pasar de tu culo, porque estas haciendo preguntas muy genéricas y no estas explicando lo que quieres en concreto (en los foros avanzados, o tu pregunta es concreta, o pasan de ti).

Z

Me parece una tonteria, si tan simple quieres que sea, hacerlo en C++.

guiye

n1x3r si te han dicho que cojas una librería de 3 webs... si tan serio es el programa preocupate un poco más por él y googlea.

n1x3r

#12 creo que te estas pasando un poco ¿no crees? Ante todo un poco de respeto, creo que lo he explicado bien, y varias veces, lo que no voy a hacer es explicarte para que sirve el programa, por que para eso se me ocurrió a mi la idea y por eso es MI PROGRAMA, desgraciadamente no tengo los conocimientos necesarios para hacerlo y por eso pregunto de la forma mas humilde posible, pero tranquilo todo aquel que aporte a la causa tendrá una copia de el (si es a lo que te refieres), con su respectivo manual de funcionamiento.
Se me olvidaba, mira #12 aqui te recuerdo la primera norma:
.: Están prohibidos los insultos, descalificaciones, así como cualquier mensaje de tipo racista, sexista o que atente contra la integridad o los derechos de una persona.

#14 no es tan fácil, acabo de empezar con visual, y aun estoy muy verde, ya busque por google, pero no se ni que poner en el buscador.

Vamos a ver, ESPECIFICO en lo que quiero, lo intentare explicar de la mejor forma posible, que luego dicen que me explico malamente.

//============================
Necesito:

SERVIDOR FTP:

Necesito crear un modulo, sección, o parte del programa que me active un servidor TFP por el puerto 21, no necesito que tenga control de usuarios ni nada por el estilo, necesito que se habilite desde un botón y que al hacerlo comparta vía TFP 4 archivos esenciales para mi cometido que están situados en la raíz del programa.
Como ya digo no tiene control de usuarios, pueden entrar de forma anónima, (Anonymous) y cuando el cliente tome uno de esos archivos que se me pueda notificar mediante un label.

Por ejemplo avisarme de que "tal IP" ha cogido "tal archivo".

CAMBIO DE DIRECCIONES IP:

Este punto es aun mas sencillo, se como se hace en Linux pero no desde C++ consiste simplemente en seleccionar un adaptador de red y cambiarle la configuración IP poniéndosela estática.

Por ejemplo, que haciendo clic en un botón la configuración del adaptador de red #1 cambie a:

IP: 192.168.1.100
MS: 255.255.255.0
PE: 192.168.1.1

Confirmando de alguna manera (un label por ejemplo) de que esos valores se han cambiado satisfactoriamente.

//==============================

No es necesario que me creéis las label ni nada por el estilo, solo decidme cual es el código que necesito saber para poder realizar estas funciones.
Desgraciadamente este es mi primer año en programación, mi profesor es un incompetente y pasa de llevarnos más allá de poner botoncitos y cambiar labels, así que me gustaría que vosotros me echaseis una mano, ya que esto se me hace demasiado grande.

PD: no creo que se necesite saber el cometido completo del programa para poder realizar estas funciones ¿no creéis?
PD: Si alguien continua sin enterarse decidme el punto que no llegáis a comprender y lo volveré a explicar lo mejor posible.

Venga un saludo y perdonad por el tocho y mi falta total de comprensión escrita, (ya que no se explicarme)

(unos nacen sin saber hablar y otros sin querer escuchar)

B

sinceramente, creo que vas por el camino equivocado con lo de "Es MI IDEA".

Mira yo no soy programador pero me dedico al dibujo / ilustracion / pixel art y esas cosas, y para pedir ayuda y consejos pongo lo que tengo hecho y eso es mostrar no solo mi idea sino mi ejecucion de la misma, y nunca nunca nadie coge y hace otro dibujo igual antes de que yo acabe el mio. Quiero decir que exponer tu idea nunca es algo malo, siempre puedes acogerte a cualquier licencia para mostrarlo y que legalmente no te lo puedan plagiar.

El hecho de que no exponga su idea nos da a entender las siguientes cosas:
a) Esta mintiendo y no tiene ninguna idea, solo quiere hacer lo que pregunta
b) Tiene un concepto demasiado elevado de si mismo ya que piensa que su idea es tan buena que nadie en el mundo la ha tenido antes y si la muestro seguro que me la quieren robar
c) Quiere hacer algo con fines malignos, tipo keylogger y demas
d) Nos esta insultando llamandonos plagiadores

Con lo cual es muy dudoso que nadie te quiera ayudar...

r2d2rigo

Pues si crees que por exponer esa idea vamos a plagiarte... ya puedes empezar a denunciarme. Por lo que puedo suponer, quieres hacer un programa p2p que te comparta los archivos del directorio raiz, con una consola que te informe de las conexiones entrantes/salientes.

Pues bien. Hace una semana escasa termine la tercera beta de un programa que hace exactamente lo mismo. Programado con MFC y sockets y con un protocolo propio. Asi que si te crees que tienes una idea revolucionaria, informate antes que (casi) todo esta inventado ya.

PD: por si alguien quiere probar mi programa, http://www.megaupload.com/es/?d=MAOGQB3Y . Es necesario abrir el puerto 26387, unicamente en la maquina que actuara como servidor.

n1x3r

Vega va lo digo, xq no vais a parar.

El programa consiste en poner los modems en factory mode.

¿en que consiste el factiry mode?

Pues es una opcion interna del modem que esta desactivada, cuando se activa te da acceso a una serie de caracateristicas especiales, a las cuales se accede por medio de las OID, bien, para poder activar este modo, tengo que hacer una serie de cosas en el modem, y hacer que se trague un archivo, para que se lo trague es necesario tener un servidor FTP, el el momento en el que lo sube y se ejecuta se activa, y mediante un cliente OID modifico las opciones, las cuales esta en formato integer, char o hexa.
La cuestion es integrar todo esto en un solo programa.

-Codigos de activacion
-Servidor FTP
-Codigos de manipulacion
-Conversor de datos char to int to hex
-Cliente MIB (OID)

r2d2rigo

Vale, tu quieres integrar el servidor FTP para asi obtener los archivos desde donde estes, las otras caracteristicas para ejecutarlo y tal... pero la pregunta es, para que necesitas cambiar la ip? No puedes hacerlo tu a mano tomando la direccion de la red local del modem? Por ejemplo, si para internet su direccion es 80.100.100.73, para red local es 192.168.1.1. No te vale con tomarla asi? Y no le veo la punta a que el servidor FTP este en la maquina a la que le vas a aplicar el factory mode. Tiene que ser asi por huevos? Porque si no podrias ahorrartelo y por ejemplo pillar el archivo necesario con GET de HTTP, que es mucho mas sencillo. Linkea si puedes un manual del proceso y sabremos como ayudarte mejor ;)

n1x3r

#19 la ip la tengo que cambiar xq el modem se traga los archivos desde una ip local especifica.

Yo no cojo nada del modem, es el el que se lo traga.

LOc0

En Windows esas cosas se guardan en... ¡bingo! El registro. Para manipularlo tendrás que hacer uso de las funciones del API explicadas aquí ->

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/registry_functions.asp

en particular yo me centraría en:


RegOpenKeyEx();
RegSetValueEx();
RegCloseKey();

He buscado en mi registro y la información que quieres cambiar está en:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services{[RISTRA DE LETRAS Y NÚMEROS]}\Parameters\Tcpip

Para el tema del FTP YO lo haría a pelo con winsock2.h

Suerte!

Salu2 ;)

kas

Continuo insistiendo en que, en mi opinion, todo el programa lo podras desarrollar mas comodamente en C#, haciendo uso del .NET Framework 2.0 y no teniendo que actuar contra APIs.

Ademas, hay muchisimos codigos abiertos sobre FTP (codeproject.net, elguille.info), que podras copiar y modificar a tu gusto, ademas de tener el namespace:

Microsoft.Win32.Registry

En el que podras encontrar todas las funciones necesarias para modificar el registro de windows, de una manera sencilla.

En cuanto al FTP: codigo abierto.
En cuanto a IP / mask / gatewa: registro
En cuanto a conocer si la IP se ha cambiado correctamente, lo normal es saber tu IP, cambiarla y ver (durante unos segundos) si tu IP continua siendo la misma o la nueva. Este codigo puede ayudarte, esta en C# .NET 2.0:

public bool Connected()
{
try
{
System.Net.IPAddress standarIP = System.Net.IPAddress.Parse("127.0.0.1");
string hostName = System.Net.Dns.GetHostName();
System.Net.IPHostEntry thisHost = System.Net.Dns.GetHostEntry(hostName);


            return standarIP != thisHost.AddressList[0];
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        return false;
    }

Solo tienes que cambiar 127.0.0.1 por tu IP original (la que tenias antes de cambiarla). Es decir, puedes reutilizar las isntrucciones de la funcion para conocer tu(s) IP(s) actuales :)

En cuanto a thisHost.AddressList es un vector, por lo que lo mas correcto seria preguntar si hay alguna coincidencia en toda la lista, pero como hay poca gente que tenga 2 conexiones o mas en un solo equipo, solo se usa la primera.

n1x3r

El problema esque solo se usar C++ ese tal C# me parece chino, se q con ese sistema es mas rapido y practico, pero fue mi profesor quien se empeño en C++, asi que se C++ y no C# :/

kas

A chino? Es C de toda la vida, pero sin punteros.

Si vas a desarrollar una aplicacion para windows en el año 2007, tiene poco sentido no utilizar las herramientas de microsoft para tal efecto.

Porque motivo? Porque tendras que hechar mano permanentemente del API de windows, lo cual es incomodo, tendras que buscar muchisima mas documentacion, para acabar sacando una solucion que, para muchas de las cosas que pides, Microsoft ya tiene desde que saco el .NET 1.0 y que se puede implementar con muy pocas lineas de codigo.

Yo hablaria con tu profesor ya que C++ tiene sentido a muy bajo nivel, o cuando sea totalmente imperativo e inexorable el hecho de utilizar punteros, para cualquier otra cosa, Visual Studio 2005 .NET + C#.

Y aun siendo totalmente necesario el uso de punteros, C# permite usar el modo "unsafe", para declarar y usar punteros:

http://msdn2.microsoft.com/en-us/library/chfa2zb8.aspx

javithelong

#24 Ya me dirás donde te insulto o te descalifico. Qué mal vas con ese nivel de prepotencia en esto de la programación...

PD: Suerte con tu programa serio.

Soltrac

Estoy con kas, creo q un programa que interactue con las apis windows debería programarse en C#, por simple comodidad, ya que como bien dicen por aquí, creo que los datos de la configuración de la red se guardan en el registro.

Aún así, para Borland C++ existe una librería que con un par de clases te comunicas con el registro fácilmente, no te puedo decir el nombre porque no lo recuerdo, pero googleando seguro que la encuentras.

Lo q no estoy seguro es si al cambiar directamente el registro, haría falta reiniciar el ordenador para q los cambios surjan efecto, sería cuestión de probar. Seguramente tendrás que hacer "manualmente" (evidentemente, q lo haga el programa) un ipconfig /renew o algo así.

Por lo demás, lo que pides parece sencillo de hacer.

n1x3r

#28 si varias, pero de tratamiento de codigo, me son muy utiles para generar codigos Html y demas cosas, ademas depequeñas aplicaciones todas unidad en uno programa que aparentemente no sirver paro que ami me ayudan mucho, de tipo char a numerico ascii y demas.
Este es el primer programa que creo que interactue con una red y otro dispositivo hardware, y la verdad esque no tengo ni puta idea, de todas formas ya he dicho que no se mucho de esto, que estoy muy verde, asi q no vengais a reirse de un intento de programa serio, creo que todos empezamos por abajo, el tema de la programacion me apasiona, pero como es normal, no lo puedo saber todo, y menos aun tan rapido, empece el trimestre pasado, y ahora estoy en visual dando los array de 3ª dimension :/

PERO JODER!! DEJAD DE CRITICARME Y ECHADME UNA MANO, sino no posteeis, pasais de mi tema y punto, x ahora el unico que aporta es LOc0 y kas, los demas hablais mucho y haceis poco. Mirad a javithelong ahora que se entera de lo que necesito pasa totalmente, con la brasa que me ha dado xq no se enteraba. en fin.

kas

Este foro esta para preguntar y responder dudas, cualquier otra cosa esta totalmente fuera de lugar.

@ n1x3er: Te has planteado ya si vas a utilizar C++ o C#? En serio, C# al 100%.

En cuanto al tema de renovar IPs, supongo que si habra que llamar al ipconfig, o buscar documentacion, xq al fin y al cabo tienes que cambiar las tablas de enrutamiento de windows y eso no creo que te lo dejen tocar asi como asi.