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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Ayuda con sockets C++?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Ayuda con sockets C++?  (Leído 1,952 veces)
ApOkAlizE

Desconectado Desconectado

Mensajes: 150


¿sabes lo que vales? ¡consigue lo que te mereces!


Ver Perfil
¿Ayuda con sockets C++?
« en: 7 Octubre 2012, 02:36 am »

Bueno lo que me sucede es que estoy haciendo una programa usando C++ en CODE::BLOCKS, pues bueno, ya hice hace medio año uno tamién en C++ pero usando visual studio 2010 y ese funcionava, pero comparo el codigo con el que estoy haciendo ahora y esta todo igual, todo y eso en el siguiente codigo:
long reb;
char rebre[10001];
memset(rebre,0,10001);
int i = 2000;
setsockopt(Connectar,SOL_SOCKET,SO_RCVTIMEO,(const char *)&i,sizeof(i));
reb = recv(Connectar, rebre,10001 ,0);
if(reb == -1)
{
     //MENSAJE DE ALERTA
}
pues para ser exactos ni siquiera espera los 2 segundos para recibir datos y siempre entra en el if de -1 o sea error... pero la conexion se abre y realmente por ejemplo los send si que se envian(lo he comprovado por telnet)... ¿Alguien tiene alguna idea de que puede estar pasando?
Gracias de antemano.


En línea

Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE
Anvil

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: ¿Ayuda con sockets C++?
« Respuesta #1 en: 7 Octubre 2012, 04:35 am »

El compilador de Visual Studio es distinto al de CodeBlocks, revisa que no te esten faltando librerías.


En línea

\\::_--__!!ss"1122
oPen syLar


Desconectado Desconectado

Mensajes: 769


The Best of You..


Ver Perfil WWW
Re: ¿Ayuda con sockets C++?
« Respuesta #2 en: 7 Octubre 2012, 06:09 am »

Postea todo el código.. que mensaje de alerta te lanza.? Seguro que al setear las opciones de tu socket.. Tienes un socket valido.?

strerror es tu amigo =)

Código:
man strerror
En línea

Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
ApOkAlizE

Desconectado Desconectado

Mensajes: 150


¿sabes lo que vales? ¡consigue lo que te mereces!


Ver Perfil
Re: ¿Ayuda con sockets C++?
« Respuesta #3 en: 8 Octubre 2012, 00:13 am »

oPen sYlar he provado con strerror y devuelve la cadena de "result too large"...
En línea

Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE
ApOkAlizE

Desconectado Desconectado

Mensajes: 150


¿sabes lo que vales? ¡consigue lo que te mereces!


Ver Perfil
Re: ¿Ayuda con sockets C++?
« Respuesta #4 en: 8 Octubre 2012, 00:56 am »

Aquí dejo el trozo de codigo correspondiente als sockets.
Y he linkeado al proyecto:
libwsock32.a
libws2_32.a
libwxmsw28u.a


SERVIDOR:

#define _WIN32_WINNT 0x501
#include "windows.h"
#include "winsock2.h"
#include "ws2tcpip.h"
#pragma comment(lib, "ws2_32.lib")



int main()
{
WSAData wsa;
        WORD Versio = MAKEWORD(2,1);
         WSAStartup(Versio, &wsa);
      SOCKET Escoltar = socket(AF_INET ,SOCK_STREAM , NULL);
      SOCKET Connectar = socket(AF_INET ,SOCK_STREAM , NULL);
      SOCKADDR_IN Servidor;
      Servidor.sin_addr.s_addr = inet_addr( "192.168.1.13" );
      Servidor.sin_family = AF_INET;
      Servidor.sin_port = htons(800);
      Tornemi:
        int Connectat;
        Connectat = 0;
      bind(Escoltar, (SOCKADDR*)&Servidor, sizeof(Servidor));
      listen(Escoltar, 10);
      int Tamany = sizeof(Servidor);
      while(true)
      {

         if(Connectar = accept(Escoltar,(SOCKADDR*)&Servidor,&Tamany))
         {
             if(WSAStartup(Versio, &wsa)==NO_ERROR)
                  {
             while(true)
             {


         long reb;
         long env;
         //char *rebre = new char(10002);
         char rebre[100];
         memset(rebre,0,99);
               int i = 2000;
               setsockopt(Connectar,SOL_SOCKET,SO_RCVTIMEO,(const char *)&i,sizeof(i));
            reb = recv(Connectar, rebre,sizeof(rebre) ,0);
            if(reb == -1)
            {
                                       //salta el codigo siempre aquí
                system("pause");
            }
                env = send( Connectar, "M5V", 4, NULL );
                if(strcmp(rebre,"MD5")==0)
                {
                    system("pause");
                }
            if(strlen(rebre) > 2)
            {
               // system("pause");
            }
            if(strlen(rebre) < 2)
            {
                Connectat++;
                if (Connectat == 5)
                {
                SD.Estat(0);
                goto Tornemi;
                }
            }
            if(reb == 0)
            {
                SD.Estat(0);
                goto Tornemi;
            }
            else
            {
                    SD.Estat(1);
            }
                    char *Obtingut;
                    Obtingut = SD.Llegir();

             if(strlen(Obtingut) > 0)
             {
                 //SD.Estat(1);
             send( Connectar, Obtingut, strlen(Obtingut), 0 );
             SD.Esborrar();
             }
             else
             {
              send(Connectar, "M5V",4 ,NULL);
             }
            if(strcmp(rebre,"M5V")==0)
            {
                SD.Estat(1);
                system("pause");
                    memset(rebre,0,10000);
               Connectat = 0;
            }
            else
            {
                send( Connectar, "M5V", 4, 0 );
                if(strcmp(rebre,"M5V")==1 && strcmp(rebre,"")==1)
                {

                }
            }

             }
         }
         }
      }
      return 0x0;



}


CLIENTE:

#define _WIN32_WINNT 0x501
#include <windows.h>
#include <winsock2.h>
#pragma comment( lib, "ws2_32.lib" )
#include "ws2tcpip.h"

 WSAData wsa;
   WORD Versio = MAKEWORD(2,1);
   WSAStartup(Versio, &wsa);
   SOCKADDR_IN Client;
   Client.sin_addr.s_addr = inet_addr("192.168.1.13");
   Client.sin_family = AF_INET;
   Client.sin_port = htons(800);
   SOCKET Connectar;
    int Connectat;
        Connectat = 0;
        while(true)
   {
   Connectar = socket(AF_INET, SOCK_STREAM, NULL);
      if(connect(Connectar,(SOCKADDR*) &Client, sizeof(Client)))
      {
         while(true)
         {
         long reb;
         long env;
         char rebre[100];
         memset(rebre,0,100);
               int i = 2000;
               setsockopt(Connectar,SOL_SOCKET,SO_RCVTIMEO,(const char *)&i,sizeof(i));
            reb = recv(Connectar, rebre,sizeof(rebre) ,0);
              env = send(Connectar, "M5V",4 ,NULL);
                if(reb == -1)
            {
                system("pause");
            }
            if(strlen(rebre) < 1)
            {
                //system("pause");
                Connectat++;
                if (Connectat == 5)
                {
                    //system("pause");
                    Connectat = 0;
                        break;
                }
            }
            if(strcmp(rebre,"M5V")==0)
            {
                system("pause");
                send(Connectar, "M5V",4 ,NULL);
                memset(rebre,0,10001);
                Connectat = 0;
            }
         }
      }

    }
      return 0x0;
}
En línea

Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con sockets
PHP
[KMT] 2 1,755 Último mensaje 30 Abril 2007, 02:10 am
por дٳŦ٭
ayuda con sockets
Programación C/C++
ankora45 4 2,089 Último mensaje 13 Octubre 2012, 14:02 pm
por ankora45
Ayuda con Sockets
Programación C/C++
AdictoxD 2 1,204 Último mensaje 17 Enero 2013, 21:15 pm
por AdictoxD
Ayuda con sockets UDP
Java
novatillo_1 2 1,386 Último mensaje 16 Octubre 2013, 16:15 pm
por novatillo_1
SOCKETS UDP Ayuda!!
Java
Pitagoras 1 1,773 Último mensaje 15 Mayo 2022, 15:55 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines