• Miércoles 12 de Marzo de 2025, 05:36

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - System@32

Páginas: [1]
1
C/C++ / Problema con sockets
« en: Miércoles 12 de Enero de 2011, 18:11 »
Hola!

He empezado a jugar con los sockets (cliente/servidor). No parece tan complicado xD. El cliente envía una cadena de texto y el servidor la tiene que recoger y mostrar por la pantalla. El problema es que el servidor nunca recoge el texto. No se si es problema del código o que. Desactive firewall, antivirus, etc.

Server
Código: C++
  1. #include <iostream>
  2. #include <WinSock2.h>
  3. #include <ws2tcpip.h>
  4. #include <iphlpapi.h>
  5. #include <conio.h>
  6.  
  7. #pragma comment(lib, "Ws2_32.lib")
  8.  
  9. void main( int argc, char *argv[] )
  10. {
  11.     WSAData wsaData;
  12.     SOCKET mSocket, acceptSocket;
  13.     struct sockaddr_in service, remote;
  14.  
  15.     char sendbuf[1024] = "Hello! I'm server, sending some test data...";
  16.     char recvbuf[1024] = "";
  17.  
  18.     int bytesSent = SOCKET_ERROR;
  19.     int bytesRecv = SOCKET_ERROR;
  20.  
  21.     char exit = '';
  22.  
  23.     if( WSAStartup(MAKEWORD(2,2), &wsaData) != 0 )
  24.     {
  25.         std::cout << "WSAStartup failed!" << std::endl;
  26.         getch(); return;
  27.     }
  28.  
  29.     if( (mSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET )
  30.     {
  31.         std::cout << "Error at socket(): " << WSAGetLastError() << std::endl;
  32.         WSACleanup; getch(); return;
  33.     }
  34.  
  35.     service.sin_family = AF_INET;
  36.     service.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
  37.     service.sin_port = htons( 55555 );
  38.  
  39.     if( (bind(mSocket, (SOCKADDR*) &service, sizeof(service))) == SOCKET_ERROR )
  40.     {
  41.         std::cout << "Error at bind(): " << WSAGetLastError() << std::endl;
  42.         closesocket( mSocket ); WSACleanup; getch(); return;
  43.     }
  44.  
  45.     if( listen(mSocket, 1) == SOCKET_ERROR )
  46.     {
  47.         std::cout << "Error at listen(): " << WSAGetLastError() << std::endl;
  48.         closesocket( mSocket ); WSACleanup; getch(); return;
  49.     }
  50.  
  51.     std::cout << "****************************************" << std::endl;
  52.     std::cout << "* Server is ready. Waiting for client! *" << std::endl;
  53.     std::cout << "****************************************" << std::endl << std::endl;
  54.  
  55.     acceptSocket = SOCKET_ERROR;
  56.     while( acceptSocket == SOCKET_ERROR )
  57.     {
  58.         acceptSocket = accept( mSocket, NULL, NULL );
  59.     }
  60.     mSocket = acceptSocket;
  61.  
  62.     bytesRecv = recv( mSocket, recvbuf, strlen(recvbuf), 0 );
  63.     if( bytesRecv == SOCKET_ERROR )
  64.     {
  65.         std::cout << "Error at recv(): " << WSAGetLastError() << std::endl;
  66.         closesocket( mSocket ); WSACleanup; getch(); return;
  67.     }
  68.  
  69.     printf( "Bytes received: %dn", bytesRecv );
  70.     printf( "Client: %sn", recvbuf );
  71.     system( "pause" );
  72.  
  73.     closesocket( mSocket );
  74.     WSACleanup;
  75. }
  76.  

Cliente
Código: C++
  1. #include <iostream>
  2. #include <WinSock2.h>
  3. #include <ws2tcpip.h>
  4. #include <iphlpapi.h>
  5. #include <conio.h>
  6.  
  7. #pragma comment(lib, "Ws2_32.lib")
  8.  
  9. void main( int argc, char *argv[] )
  10. {
  11.     WSAData wsaData;
  12.     SOCKET mSocket, acceptSocket;
  13.     sockaddr_in service;
  14.  
  15.     char sendbuf[1024] = "Hello! I'm client, sending some test data...";
  16.     char recvbuf[1024] = "";
  17.  
  18.     int bytesSent = SOCKET_ERROR;
  19.     int bytesRecv = SOCKET_ERROR;
  20.  
  21.     if( WSAStartup(MAKEWORD(2,2), &wsaData) != 0 )
  22.     {
  23.         std::cout << "WSAStartup failed!" << std::endl;
  24.         getch(); return;
  25.     }
  26.  
  27.     if( (mSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET )
  28.     {
  29.         std::cout << "Error at socket(): " << WSAGetLastError() << std::endl;
  30.         WSACleanup; getch(); return;
  31.     }
  32.  
  33.     service.sin_family = AF_INET;
  34.     service.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
  35.     service.sin_port   = htons( 55555 );
  36.  
  37.     if( (connect(mSocket, (SOCKADDR*) &service, sizeof(service))) == SOCKET_ERROR )
  38.     {
  39.         std::cout << "Error at connect(): " << WSAGetLastError() << std::endl;
  40.         closesocket( mSocket ); WSACleanup; getch(); return;
  41.     }
  42.  
  43.     bytesSent = send( mSocket, sendbuf, strlen(sendbuf), 0 );
  44.     if( bytesSent == SOCKET_ERROR )
  45.     {
  46.         std::cout << "Error at send(): " << WSAGetLastError() << std::endl;
  47.         closesocket( mSocket ); WSACleanup; getch(); return;
  48.     }
  49.    
  50.     printf( "Bytes sent: %dn", bytesSent );
  51.     system( "pause" );
  52.  
  53.     closesocket( mSocket );
  54.     WSACleanup;
  55. }
  56.  

2
Programación Lógica / Prolog (Instancias)
« en: Viernes 22 de Octubre de 2010, 12:38 »
Hola!

Necesito un poco de ayuda.
(1) - Como compruebo si una variable esta instanciada¿?
(2) - Tengo una array instanciada con 'O' y 'X'. Intento cambiar las 'X' por 'O' por no consigo hacerlo. Siempre me da false, haga lo que haga. He intentado desintanciar la array pero tampoco se como hacerlo. Y tampoco hay mucha informacion sobre el tema. Gracias!

Saludos!

3
C/C++ / Multilenguaje
« en: Domingo 18 de Abril de 2010, 21:14 »
Buenas!

Pues eso... estoy trasteando con el 'C', y me paso por la cabeza, por ejemplo, un programa fácil que detecte el idioma del sistema operativo y que muestre un mensaje simple como "Hola Mundo" en ese idioma. EL problema, que no tengo ni idea de como detectar el idioma y tampoco encuentro como y lo del mensaje tampoco lo tengo muy claro como gestionarlo. Me gustaría algo parecido que cada idioma sea una archivo, aunque no se si debería ser un simple archivo de texto o debería tener una estructura determina. Me gustaría que me pudierasi dar idea...

Saludos!!!

4
C/C++ / Problema con variables...
« en: Sábado 16 de Enero de 2010, 16:03 »
Hola a todos!!!

Bueno, a ver como lo explico... tengo un código, bastante largo por esto no lo pongo, y problema que básicamente tengo es que hay algunas variables (2) que en un determinado momento cogen el valor de 0 (cero), una de ellas ni siquiera debería ponerse a 0 nunca, la otra es un valor que voy decrementando. Hay que mencionar que uso punteros, y me he pasado mirando el código durante horas, pero no encuentro el motivo. Entonces me gustaría saber posibles causas ademas de los punteros que puede que sean un problema... Una cosa mas, como es posible que un rand() entre 2 valores devuelva siempre el mismo, en mi caso el mayor de los valores...

Código: C
  1.  
  2. //limits.cE enpieza en 0 y limits.cD en 8
  3. //el primero se va incrementando y el segundo decrementando
  4. //hasta que llegan al mismo valor
  5. posX = ((rand() % (limits.cE+1)) + (limits.cD+1)) - 1;
  6.  
  7.  

5
C/C++ / Switch case que no sea constante (C)
« en: Sábado 2 de Enero de 2010, 14:15 »
Hola!!!!
Feliz año nuevo!!!

A ver, es posible hacer es switch case con variables que no esa constantes...
He probado con algo como esto, pero nada
Código: C
  1.  
  2. const char derecha = conf.derecha, izquierda = conf.izquierda, disparo = conf.disparo, pause = conf.pause;
  3. if( _kbhit() ){ 
  4.     tecla = getch();
  5.     if( tecla == -32 ){
  6.         tecla = getch();
  7.     }
  8.  
  9.     switch( tecla ){
  10.         case derecha:{
  11.         }break;
  12.  
  13.         case izquierda:{
  14.         }break;
  15.  
  16.         case pause:{
  17.         }break;
  18.                
  19.         case disparo:{
  20.         }break;
  21.                
  22.         case KEY_ESC:{
  23.         }break;
  24.     }
  25. }
  26.  
  27.  

6
C/C++ / Estructura archivos .h y .c
« en: Jueves 26 de Noviembre de 2009, 16:49 »
Hola a todos!!!

A ver... tengo un archivo .h llamado tdatos.h (tipos de datos), donde hay algunas constantes y los encabezados de las estructuras. Ademas tengo el tdatos.c donde estan definidas las estructuras. Ahora en el archivo principal hago el include del tdatos.h, hasta aqui todo bien, creo una variable con uno delos tipos de datos que hay definidos en el tdatos.h. Ahora puedo acceder a toda la estructura no esa variabel sin problemas, pero cuando le doy a compialar, me VS2008 me dice que uso un struct sin definir...

Ejemplo:

tdatos.h
Código: C
  1.  
  2. #ifndef TDADES_H
  3.     #define TDADES_H
  4.  
  5.     #define MAX_NOMBRE 30
  6.     typedef struct DATOS DATOS;
  7. #endif
  8.  
  9.  

tdatos.c
Código: C
  1.  
  2. #include "tdades.h"
  3. struct DATOS{
  4.     char nombre[MAX_NOMBRE];
  5.     int tlf;
  6. };
  7.  
  8.  

main.h
Código: C
  1.  
  2. #include "tdades.h"
  3.  
  4. void main()
  5. {
  6.     DATOS dat;
  7.     dat.nombre[0] = 'p';
  8.     dat.tlf = 887887;
  9. }
  10.  
  11.  

7
C/C++ / Estructuras, listas, memoria dinamica
« en: Sábado 7 de Marzo de 2009, 17:40 »
Código: C
  1.  
  2. struct s_cites
  3. {
  4.     int id; //id de la reunion             
  5.     char nom[LENGTH_CHAR]; //nombre de la persona          
  6.     char lloc[LENGTH_CHAR]; //ligar de la reunion          
  7.     struct t_data data; //data de la reunion                   
  8.     struct t_hora hora; //hora de la reunion           
  9.     struct s_cites *seguent; //puner hacia la siguiente reunion    
  10.     struct s_cites *anterior; //punter hacia la anterior reunion       
  11. };
  12.  
  13.  

nueva ficha...
Código: C
  1.  
  2. struct s_cites *nova_fitxa(struct s_cites *llista)
  3. {
  4.     struct s_cites *val;
  5.     val = (struct s_cites *)malloc(sizeof(struct s_cites));
  6.     *val = introCites();
  7.     llista = nou_element(val,llista);
  8.     id_struct(val);
  9.     return(llista);
  10. }
  11.  
  12.  

nuevo elemento en la lista -> mi problema viene aqui... si en la lista no hay nada facil... el problema es cuando hay elementos... no se como decir a la estructura cual es la anterior y a la anterior estructura que la actual, esta es la siguiente...
Código: C
  1.  
  2. struct s_cites *nou_element(struct s_cites *cita, struct s_cites *llista)
  3. {
  4.      
  5.     if(llista == NULL)
  6.     {
  7.         cita->seguent = NULL;
  8.         cita->anterior = NULL;
  9.     }
  10.     else
  11.     {
  12.         cita->seguent = NULL;
  13.         cita->anterior->seguent = llista;
  14.         cita->anterior = cita->anterior->anterior;
  15.     }
  16.     llista = cita;
  17.     return(llista);
  18. }
  19.  
  20.  

PD: perdonad que no este traducido... es un trabajo que nos lo mandaron como de hoy para mañana...

Páginas: [1]