pd: programando en C
Código:
#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;
}