Documentos de Académico
Documentos de Profesional
Documentos de Cultura
uk
Provided by Universidad Distrital de la ciudad de Bogotá: Open Journal Systems
Implementación cliente
servidor mediante sockets
Client-server implementation using sockets
Resumen
Este artículo pretende hacer visibles los requerimientos tanto físicos, lógicos y
funcionales necesarios para establecer una comunicación entre
dos computadores utilizando sockets; se plantean los diferentes
protocolos mediante los cuales se puede realizar su implemen-
tación; además, se presentan las principales características téc-
nicas a tener en cuenta y se realiza la implementación mediante
el uso del lenguaje de programación como C++.
Palabra clave
Programa cliente, programa servidor, comunicaciones, puerto
lógico, protocolo, dirección IP.
Abstract
This article aims to make visible the requirements of both physical, logi-
cal and functional requirements for communication between two com-
puters using sockets, raised different protocols by which implementa-
tion can be done, also presents the main technical features to consider
and implementation is done using the programming language C + +.
Keywords
Client (customer) program, server program, communications, logic
port, protocol, IP address.
* Ingeniero de sistemas, Magister en teleinformática, miembro del grupo de investigación IAFT, docente de palnta
48
48 de la Universidad Distrital Francisco José de Caldas. hfuquene@udistrital.edu.co
InsertarMenu(hwnd); }
ShowWindow (hwnd, nFunsterStil); else
while (GetMessage (&messages, NULL, 0, {
0)) SendMessage(hwndSTATUS, WM_SET-
{ TEXT, 0, (long int) “INICIADO” );
TranslateMessage(&messages); }
DispatchMessage(&messages); len=sizeof(struct sockaddr);
} sock=accept(sock,(sockaddr*)&local,&le
return messages.wParam; n);
} SendMessage(hwndSTATUS, WM_SET-
TEXT, 0, (long int) “CONECTADO” );
struct thread1
while (len!=0)
{
{
HWND hwnd1;
len=recv(sock,Buffer,499999,0);
HWND hwnd2;
if (len>0)
HWND hwnd3;
{
};
Buffer[len]=0;
thread1 obj1;
SendMessage(hwndRECIBIDO, WM_SET-
UINT ThreadProc1(LPVOID lpvoid); TEXT, 0, (long int) Buffer );
UINT ThreadProc1(LPVOID lpvoid) }
{ Sleep(1);
thread1 *temp = (thread1*)lpvoid; }
HWND hwnd= temp->hwnd1; }
HWND hwndRECIBIDO = temp- LRESULT CALLBACK WindowProcedure
>hwnd2; (HWND hwnd, UINT message, WPARAM
HWND hwndSTATUS = temp->hwnd3; wParam, LPARAM lParam)
HDC hdc= GetDC(hwnd); {
WSAStartup(MAKEWORD(2,0),&wsa); static HINSTANCE hInstance;
sock=socket(AF_INET,SOCK_ char textoAENVIAR[500000];
STREAM,IPPROTO_TCP); HANDLE hThrd1,hThrd2;
local.sin_family = AF_INET; switch (message)
local.sin_addr.s_addr = INADDR_ANY; { case WM_CREATE:
local.sin_port = htons(9999); static HWND hwndENVIARDATA =
if (bind(sock, (SOCKADDR*) &local, CreateWindow
sizeof(local))==-1) ( “button”, “Enviar”,
{ WS_CHILD|WS_VISIBLE|BS_CENTER,
SendMessage(hwndSTATUS, WM_SET- 520, 395, 100, 30, hwnd, (HMENU)CM_
TEXT, 0, (long int) “ERROR” ); ENVIARDATA, hInstance, NULL
} );
if (listen(sock,1)==-1) static HWND
{ hwndRECIBIDO=CreateWindowEx
SendMessage(hwndSTATUS, WM_SET- ( WS_EX_CLIENTEDGE, “EDIT”,””,
TEXT, 0, (long int) “ERROR” ); WS_CHILD | WS_VSCROLL | ES_MUL- 53
53
Servidor Cliente
Referencias Bibliográficas
DEITEL, Harvey M. Cómo programar en C/
socket socket C++ y Java. México: Prentice Hall. 2004
DONOHOO Michael J., CALVERT, L Ken-
bind neth. TCP/IP sockets in C bundle. Edito-
connect rial PrenticeHall. 2009
listen DONAHOO, Michael. TCP/IP Sockets in C:
Practical guide for programmers. Estados
Unidos: Morgan Kaufmann. 2009
accept
FOROUNZAN Behrouz A. Transmisión de
Datos y Redes de Comunicaciones. Mc-
Trx/Rx Trx/Rx GrawHill. 2009
KENDALL, Kenneth. Análisis y Diseño de
Sistemas. México: Prentice Hall. 2005
close close
MÁRQUEZ García Manuel, Unix, Progra-
mación avanzada, editorial Ra-ma. 2005
El programar la WIN-API de Windows RUMBAUGH James, Modelado y diseño
nos facilita enormemente el trabajo; orientado a objetos. Metodología OMT,
Editorial Prentice Hall. 2006
nos da la posibilidad del uso de inter-
faces estándar y permite una mayor STALLING, William. Comunicaciones y Re-
des de Computadores. Editorial Prentice-
interacción entre el usuario y la aplica-
Hall. 2000
ción; identificando plenamente los dos
extremos de la transmisión, el cliente y Fuentes Electrónicas
el servidor. http://www.winprog.org/tutorial/es/in-
dex.html
Trabajos futuros http://es.tldp.org/Universitarios/semina-
rio-2-sockets.html
El programa se puede mejorar para http://www.chuidiang.com/varios/Li-
que sea un poco más didáctico para el bros/libros.php
usuario final, de tal forma que se pue- http://www.arrakis.es/~dmrq/beej/in-
da identificar el tipo de transmisión, el dex.html
modo de transmisión y las velocidades http://www.mitecnologico.com/Main/
de transmisión utilizadas. ComunicacionClienteServidorSockets
59
59