🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #16022

Programar sockets

#16022
From: Merlin
Date: Mon, 22 May 2000 00:00
176 lines
5498 bytes
This is a multi-part message in MIME format.
--------------AF2D6351271DF1437CEA42AB
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

Tengo hecho un peque=F1o programa para aprender algo sobre socket que
consiste en un cliente y servidor en el puerto 7 (eco). Compilado con
Borland C++ funciona, pero he querido hacerlo con Linux, g++ y
l=F3gicamente hay que cambiar algunas librerias. Algunas las he cambiado
pero hay ciertas definiciones que no se como llamarlas en linux.

Por ejemplo para inicializar el socket en windows est=E1 la funci=F3n
WSAStartup que recibe como par=E1metro un struct WSADATA, y la funci=F3n
WSACleanup. =BFComo se llaman estas funciones en Linux y como se declaran=

los struct's?. En windows lleva la librer=EDa winsock.h, en Linux la he
cambiado por <sys/socket.h> y <netinet/in.h> (tengo la SuSe 6.2). =BFMe
falta por a=F1adir alguna librer=EDa?

Os mando el programa cliente para windows para que veais un poco como
va.

Salu2.

------
MicroSoft? is that some kind of a toilet paper?.

                    '	      _____________________________________
     |\          .(' *) ' .  |				           |
     | \        ' .*) .'*    | Merlin  -  Dick32@rocketmail.com    |
     |(*\      .*(// .*) .   |-------------------------------------|
     |___\       // (. '*    |     POWERED BY - Linux SuSE 6.2     |
     ((("'\     // '  * .    |				           |
     ((c'7')   /\)           |     Linux Reg. User #72.361         |
     ((((^))  /  \	     |    Linux Reg. Machine #54.376       |
   .-')))(((-'   /           |_____________________________________|
      (((()) __/'
       )))( |
        (()	=

         ))
--------------AF2D6351271DF1437CEA42AB
Content-Type: text/plain; charset=iso-8859-1;
 name="client_linux.cpp"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline;
 filename="client_linux.cpp"


#pragma hdrstop
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>

#pragma argsused

int main(int argc, char *argv[])
{
    int s;
    int error;
    SADATA saData;
    char cadena[100];
    char cadena2[100];
    sockaddr_in dir;

    printf("Comienzo del Programa\n");
    error=3DSAStartup(257,&saData);
    if (error<0) {
      printf("Error al inicializar Sockets\n");
      gets(cadena);
      return 1;
    }
    s=3Dsocket(PF_INET,SOCK_STREAM,0);
    if(s=3D=3D-1){
        printf("Error  creando socket\n");}

    dir.sin_family=3DPF_INET;
    dir.sin_port=3D7*256;
    dir.sin_addr.s_addr=3Dinet_addr("192.168.0.1");
    error=3Dconnect(s,(struct sockaddr*)&dir,16);
    if(error<0){
    printf("Error conexi=F3n\n");}

    printf("Cadena a mandar:");
    gets(cadena);
    error=3Dsend(s,cadena,sizeof(cadena),0);
    if(error<0){
    printf("Error enviando\n");
    }
    error=3Drecv(s,cadena2,sizeof(cadena2),0);
    if(error<0){
    printf("Error recibiendo\n");
    }
    printf("Cadena recibida: %s\n",cadena2);

    error=3DSACleanup();
    if (error!=3D0) {
      printf("Error al cerrar Sockets\n");
      gets(cadena); return 1;
    }
    printf("Fin del Programa\n");
    gets(cadena); return 0;
}

--------------AF2D6351271DF1437CEA42AB
Content-Type: text/plain; charset=iso-8859-1;
 name="client_win.cpp"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline;
 filename="client_win.cpp"


#pragma hdrstop
#include <condefs.h>

//---------------   CLIENTE ECHO   --------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock.h>


#pragma argsused

int main(int argc, char *argv[])
{
    int s;
    int error;
    WSADATA wsaData;
    char cadena[100];
    char cadena2[100];
    SOCKADDR_IN dir;

    printf("Comienzo del Programa\n");
    error=3DWSAStartup(257,&wsaData);
    if (error!=3D0) {
      printf("Error al inicializar WinSockets\n");
      gets(cadena);
      return 1;
    }
    s=3Dsocket(PF_INET,SOCK_STREAM,0);
    if(s=3D=3D-1){
        printf("Error  creando socket\n");}

    dir.sin_family=3DPF_INET;
    dir.sin_port=3D7*256;
    dir.sin_addr.s_addr=3Dinet_addr("192.168.0.1");
    error=3Dconnect(s,(struct sockaddr*)&dir,16);
    if(error<0){
    printf("Error conexi=F3n\n");}

    printf("Cadena a mandar:");
    gets(cadena);
    error=3Dsend(s,cadena,sizeof(cadena),0);
    if(error<0){
    printf("Error enviando\n");
    }
    error=3Drecv(s,cadena2,sizeof(cadena2),0);
    if(error<0){
    printf("Error recibiendo\n");
    }
    printf("Cadena recibida: %s\n",cadena2);

    error=3DWSACleanup();
    if (error!=3D0) {
      printf("Error al cerrar WinSockets\n");
      gets(cadena); return 1;
    }
    printf("Fin del Programa\n");
    gets(cadena); return 0;
}

--------------AF2D6351271DF1437CEA42AB--
Technical Details
Message-ID: <3929716C.5223A63A@REMOVE_THISrocketmail.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,3cf099769ce84316,start
X-Google-Attributes: gidf86c8,public
From: Merlin <dick32@REMOVE_THISrocketmail.com>
Subject: Programar sockets
Date: 2000/05/22
Message-ID: <3929716C.5223A63A@REMOVE_THISrocketmail.com>
X-Deja-AN: 625929949
X-Accept-Language: es-ES, ca, en
Content-Type: multipart/mixed; boundary="------------AF2D6351271DF1437CEA42AB"
Organization: Milagros por encargo S.A.
Mime-Version: 1.0
Newsgroups: es.comp.os.linux.programacion