elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ... 401
431  Programación / .NET (C#, VB.NET, ASP) / Re: Servidor socket TCP C# en: 25 Julio 2017, 22:58 pm
Si esque no has cambiado casi nada, solo un par de líneas. El resto, ha sido meter la función antigua (que estaba bien, salvo algunas correcciones) en la funcion Start. Sepáralas de nuevo, es bueno separar el código en funciones. Pero hayq eu distinguir bien qué es exactamente lo que va a hacer cada función.
Tu función receiveData lo que hacía era recibir los datos, bien, y cerrar el socket y pedir otro cliente y recibir sus datos y etc...
Eso no es una función con una utilidad clara.

Limítate a hacer, por ejemplo, esto:
Código:
Start: Bucle { aceptar cliente, trabajar los datos de ese cliente (llamando a receiveData }
ReceiveData: Enviar y recibir datos. Nada más (no llamas a Start ni llamas recursivamente a receiveData. Si quieres recibir más datos o esperar, si tal, harás un bucle

En fin, el resumen de esto es que los métodos deben tener una utilidad clara. Métodos que se llaman de forma circular (Start -> ReceiveData -> Start) pueden ser peligrosos, y en este caso en concreto, no es el momento de usarlo. Divide la función Start en pasos: Recibir cliente, manejar el cliente. Luego, si algún paso es grande (Manejar el cliente), lo mueves a un método privado. Luego, divide y analiza ese método privado.
432  Programación / .NET (C#, VB.NET, ASP) / Re: Servidor socket TCP C# en: 25 Julio 2017, 13:46 pm
Hay varias cosas que deberías reestructurar.
Una de ellas es que creas el serverSocket desde fuera. Sería más correcto que lo creases, bindeases y lo pusieras a escuchar dentro del método Start, pasándole los parámetros. Pero bueno, esto es secundario actualmente.

El principal problema es el Start y el receiveData. ReceiveData es una función recursiva. ¿Por qué? Dentro del Start la llamas en bucle, para qué hacerla recursiva. Sería preferible cambiar la recursión por un bucle. Y bueno, no solo es recursiva sino que llama a Start. Este flujo pues... ¿Esperas que la función "receiveData" acepte a otros clientes? Si quieres que tras un cliente, espere a otro, entonces pon un bucle dentro de la función Start, por ejemplo.

Y luego, en la función Start, tienes un bucle que es "while(Available == 0)". Mientras que no haya datos, leemos datos. ¿Y qué ocurre si cuando llegamos a este punto ya hay datos?
433  Foros Generales / Foro Libre / Re: ¿Ocultar fotos en la galeria de movil¿ en: 25 Julio 2017, 01:14 am
^^ que ocultas pillín  :xD :laugh: :laugh: :laugh: :laugh: :laugh: :laugh:

En estos casos la carpeta con nombre "Ejercicios Mates" no falla. La App de la galería ya sabe de qué va el tema y no la muestra :X
434  Programación / Programación C/C++ / Re: Error al compilar una DLL en: 25 Julio 2017, 01:10 am
Umh bueno, acerca de eso...
Code::Blocks tiene un tipo de proyecto que es Dynamic Link Library, DLL vaya. Si seleccionas ese tipo de proyecto al crearlo, te lo hace automáticamente todo esto.
De todos modos, si va sa Propiedades del proyecto -> Build targets, verás que hay un selector, y una de sus opciones es "Dynamic library". En tu caso, por defecto estará puesto a "Console application", supongo. Si lo cambias ya debería estar, y ya no tendrías que poner el -shared (lo cierto es que esta opción mejor dejársela al IDE xD)

Y con respecto a si cambiándole la extension funcionará, no lo sé. Prueba jaja
435  Programación / Programación C/C++ / Re: Error al compilar una DLL en: 25 Julio 2017, 00:26 am
Todo está bien salvo que lo pusiste en compilador. El parámetro -shared es del linker. Tú quieres que ese parámetro aparezca en la segunda parte, donde el "g++.exe -o ...". Para ello, coloca ese parámetro en la pestaña "Linker settings".

Como explicación racional a todo esto:
Se puede compilar sin main un código. Generas el código de las funciones o datos que haya. El problema viene a la hora de linkear. Si quieres linkear los códigos objeto para generar un ejecutable, necesita un punto de entrada, el "main". Es por eso que da el error, al no encontrarlo. Claro que al pasarle el -shared, ya no es un ejecutable, sinó una DLL, que no lo necesita.
436  Programación / Bases de Datos / Re: ¿sentencia en MYSQL dividir cadenas y devolver un recorset por cada resultado en: 24 Julio 2017, 03:01 am
Este tema es de hace 6 años -.-

La obtuviera o no, este señor no se conecta desde poco después de crear el tema, así que es muy dudoso que responda xD

Si quieres solventar tu problema y no encuentras información por el foro, es mejor que crees un tema.

(No se abren temas tan antiguos)
437  Foros Generales / Foro Libre / Re: (Encuesta) ¿Que uso le dais al foro? en: 24 Julio 2017, 01:53 am
C y H
Aunque bueno, más que charlar, me suelo pasar por algún tema candente de vez en cuando y ya :X
438  Programación / Desarrollo Web / Re: Pongo dos estilos css con <link> y se me mezclan los estilos.solucion? en: 24 Julio 2017, 00:14 am
Si te refieres a que se aplican a elemntos que no son, entonces los CSS están mal formados. Los selectores deben ser lo más estrictos posible. Si tuvieras por ejemplo una tabla con clase "calendario" que tenga celdas con clase "dia", no basta con poner ".dia { ... }". Tienes que poner, por ejemplo, ".calendario .dia { ... }".

Si tu problema es otro, no lo entendí. ¿Qué es lo que se mezcla exactamente?
439  Programación / Programación C/C++ / Re: Como cambiar el directorio de un programa en c++ en: 23 Julio 2017, 01:06 am
Puedes poner la ruta absoluta (por ejemplo, "C:/abc/xyz.txt")
440  Programación / Programación C/C++ / Re: Cronometro c++ en: 22 Julio 2017, 14:37 pm
Si quieres saber el tiempo que ha pasado entre un punto y otro d ela ejecución, tienes clock() de la librería <ctime>, que retorna (usualmente), milisegundos:

Código
  1. #include <ctime>
  2.  
  3. int main(){
  4.    clock_t cl = clock(); // Milisegundos transcurridos hasta este momento
  5.  
  6.    // Pasa el tiempo...
  7.  
  8.    cout << (clock() - cl) << endl; // Tiempo ahora - tiempo anterior = tiempo transcurrido
  9. }

Como detalle, clock no retorna milisegundos, sino ticks del reloj. En Windows suelen ser milisegundos, pero no tiene por qué. Para tenerlo seguro, tienes la constante "CLOCKS_PER_SEC".


Como detalle final, tienes la librería chrono de C++11, que es muy completa para medir tiempos. La más completa de C++ probablemente. Aquí tienes una buena referencia de ella: http://www.cplusplus.com/reference/chrono/
Páginas: 1 ... 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ... 401
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines