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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Socket en Dev c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Socket en Dev c++  (Leído 4,051 veces)
davidzelaya

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Socket en Dev c++
« en: 13 Septiembre 2012, 06:45 am »

Buen dia Estimados tengo una duda con un proyecto de Socket en Dev c++
se trata de colocar un menu mediante switch que elija dos opciones 1. enviando y 2, recibiendo el punto aqui es q no se donde debo implentar este menu.

CLIENTE

#include <iostream>
#include <windows.h>
#pragma comment(lib, "Ws2_32.lib")
#define PUERTO 8080  
WSADATA wsa;
SOCKET cliente;
sockaddr_in remoto;  
int error();  
void menu();
int op();
int main(){
    std::string buffer = "Hola, soy un cliente en C++!";  
    char buffer2[300];
       int bytes_recv;      
if(WSAStartup(MAKEWORD(2,2), &wsa))        
      return error();      
  remoto.sin_family = AF_INET;    
  remoto.sin_port = htons(PUERTO);   // Puerto donde nos conectaremos     //
  remoto.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); // IP del servidor a donde nos conectaremos    
  remoto.sin_addr = *((in_addr*)gethostbyname("localhost")->h_addr); // Host a donde nos conectaremos      
  cliente = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);    // Protocolo TCP      
  if(cliente == INVALID_SOCKET)        
       return error();      
  if(connect(cliente, (sockaddr*)&remoto, sizeof(sockaddr)))// Conectamos con el servidor        
      return error();  
  for(;;){    

     std::cout<<"Mensaje: ";
     std::cin>>buffer;
     send(cliente, buffer.c_str(), buffer.length(), 0);  // Enviamos un saludo      
     Sleep(1000);
     recv(cliente, buffer2, 300, 0);
     if(bytes_recv > 0){
         std::cout<<"Respuesta: "<<buffer2<<std::endl;
     }  
   }
     closesocket(cliente);                                                       // Finalmente desconectamos...      
     WSACleanup();      
  return 0;
}  
 int error(){    
       std::cout << "Error #" << GetLastError() << std::endl;    
       WSACleanup();      
       getchar();
    system("PAUSE");          
       return 0;    
 }



SERVIDOR

#include <iostream>
#include <windows.h>
#pragma comment(lib, "Ws2_32.lib")
#define PUERTO 8080
  
WSADATA wsa;
SOCKET servidor, nueva_conexion;
sockaddr_in local;
  
int error();
void menu();
void enviando();
int op;  
int main(){
    local.sin_port = htons(PUERTO);            // Puerto a la escucha.
    local.sin_family = AF_INET;            // Debe ser AF_INET.
    local.sin_addr.S_un.S_addr = INADDR_ANY;   // Usar cualquier dirección.
    char Mensaje[300];
    if(WSAStartup(MAKEWORD(2,2), &wsa))
        return error();
  
    servidor = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);   // Protocolo TCP
      
    if(servidor == INVALID_SOCKET)
        return error();
  
    if(bind(servidor, (sockaddr*)&local, sizeof(sockaddr)) == SOCKET_ERROR)
        return error();
  
    if(listen(servidor, 1) == SOCKET_ERROR)     // Colocamos el servidor a la escucha.
        return error();
  
    std::cout << "Servidor a la escucha por el puerto " << PUERTO << ", esperando conexion." << std::endl;
   do{
     nueva_conexion = accept(servidor, NULL, NULL); // Esperamos una conexión entrante y la aceptamos.
   } while(nueva_conexion == SOCKET_ERROR);
     std::string mensaje = "Servidor C++!";
     send(nueva_conexion, mensaje.c_str(), mensaje.length(), 0); // Enviamos un mensaje al cliente conectado
     int bytes_recv;
     char buffer[256];
     memset(buffer, 0, sizeof(buffer)); // Limpiamos el buffer.
    do{   menu();
        cin>>op;
         switch(op){
          case 1:
    
     for(;;){    
         bytes_recv = recv(nueva_conexion, buffer, sizeof(buffer), 0);   // Esperamos para recibir datos...
         if(bytes_recv > 0)
            std::cout << "Buffer: " << buffer << " - Bytes recibidos: " << bytes_recv << std::endl;
         std::cout<<"Enviar Mensaje: ";
         std::cin>>Mensaje;
         send(nueva_conexion, Mensaje, strlen(Mensaje), 0);   // Enviamos un saludo      
         Sleep(1000);  
    }
    closesocket(nueva_conexion);                                    // Lo desconectamos!
  
    WSACleanup();
         system("PAUSE");
    return 0;
}
  
int error(){
    std::cout << "Error #" << GetLastError() << std::endl;
    WSACleanup();
  
    return 0;


espero de su ayuda de antemano mil gracias..




En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No-Ip Y socket
Programación Visual Basic
n3ts4mura1 0 1,349 Último mensaje 15 Agosto 2006, 20:20 pm
por n3ts4mura1
Raw socket
Programación Visual Basic
yeikos 3 2,606 Último mensaje 28 Agosto 2007, 15:53 pm
por elmaro
Multithread Socket (Thread per Socket)not Complete « 1 2 »
Programación Visual Basic
ntaryl 12 9,332 Último mensaje 10 Febrero 2012, 18:42 pm
por ntaryl
Programacion con Sockets
.NET (C#, VB.NET, ASP)
LOUNELSON 1 2,410 Último mensaje 19 Noviembre 2012, 04:19 am
por spiritdead
¿Socket 1156 es compatible con el socket 1155?
Hardware
Karkass 8 18,480 Último mensaje 4 Marzo 2021, 04:32 am
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines