Article View: es.comp.os.linux.programacion
Article #16022Programar sockets
From: Merlin
Date: Mon, 22 May 2000 00:00
Date: Mon, 22 May 2000 00:00
176 lines
5498 bytes
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-mailShow 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