Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Temas - jorge_hura

#1
Hola buenas, soy principiante con esto de la programacion. En mi proyecto recibo una informacion a traves de un socket, esta se guarda en un espacio que he llamado recvBuff[512] (declarado como global). por el socket debe llegarme un caracter que luego tengo que comprobar de un array en que posicion del array esta. Mi problema es que al usar un stcmp dentro de un for para saber la posicion del arrray no me deja porque uno es char y el otro const char*. Hay alguna forma de transformar de un tipo al otro?? gracias. adjunto el codigo

pd: programando en C

#ifndef _WINDOWS_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif
#pragma comment( lib, "ws2_32.lib" )
#include <WinSock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Ws2tcpip.h>

char comodin[512];
char SendBuff[512];
char RecvBuff[512];

char s2[512]= " ";

char tiempoCaracteres[]={"0123456789abcdefghijklmnopqrstuvwxyz,.;:+-*/!%&/()=?¿¡-}<>[]\n"};


int main(int argc, char *argv[]){
 
  WSADATA wsaData;
  SOCKET conn_socket;
  struct sockaddr_in server;
  struct hostent *hp;
  int resp,numero,p;
  char comodin,comodin2;
  int ClaseComando=0;
  char c;
  char comodin,comodin2;
  do{
  //Inicializamos la DLL de sockets
  resp=WSAStartup(MAKEWORD(1,0),&wsaData);
  if(resp){
    printf("Error al inicializar socket\n");
    getchar();return -1;
  }

  //Obtenemos la IP del servidor... en este caso
  // localhost indica nuestra propia máquina...
  hp=(struct hostent *)gethostbyname("192.168.0.5");

  if(!hp){
    printf("No se ha encontrado servidor...\n");
    getchar();WSACleanup();return WSAGetLastError();
  }

  // Creamos el socket...
  conn_socket=socket(AF_INET,SOCK_STREAM, 0);
  if(conn_socket==INVALID_SOCKET) {
    printf("Error al crear socket\n");
    getchar();WSACleanup();return WSAGetLastError();
  }
   
  memset(&server, 0, sizeof(server)) ;
  memcpy(&server.sin_addr, hp->h_addr, hp->h_length);
  server.sin_family = hp->h_addrtype;
  server.sin_port = htons(60);

  // Nos conectamos con el servidor...
  if(connect(conn_socket,(struct sockaddr *)&server,sizeof(server))==SOCKET_ERROR){
    printf("Fallo al conectarse con el servidor\n");
    closesocket(conn_socket);
    WSACleanup();getchar();return WSAGetLastError();
  }
  printf("Conexion establecida con: %s\n", inet_ntoa(server.sin_addr));
 
 
  //do{
printf("Escribe lo que deseas enviar(acabado en '.'):");
fflush (stdin);
gets(SendBuff);

  //Enviamos y recibimos datos... 
  printf("Datos enviados: %s \n", SendBuff);
  send(conn_socket,SendBuff,sizeof(SendBuff),0);
 
 
  //printf("Recibiendo Mensaje... \n");
  fflush (stdin);
  strcpy( RecvBuff, s2 );
  recv(conn_socket,RecvBuff, sizeof(RecvBuff), 0);
  printf("Datos recibidos: %s \n", RecvBuff);
 
 

  for(p=0 ; p<61 ; p++)
{

comodin=tiempoCaracteres[p];

if(strcmp(RecvBuff,comodin)==0)
{
numero = p;
printf("el numero del caracter es: %d", numero);
}

  }
   fflush (stdin);
  printf( "primero pulsa s para seguir enviando, despues escribe el comando deseado." );
  }while ( ( c = getchar() ) == 's'); 
 
  // Cerramos el socket y liberamos la DLL de sockets
  closesocket(conn_socket);
  WSACleanup();
  return EXIT_SUCCESS;
}