10
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Sockets Arquitectura cliente-servidor Sistemas Operativos

Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Embed Size (px)

DESCRIPTION

Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información. Sistemas Operativos. Sockets Arquitectura cliente-servidor. Sockets – Introducción. Socket (enchufe) Canal de comunicación entre procesos no emparentados. Socket. - PowerPoint PPT Presentation

Citation preview

Page 1: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Universidad Tecnológica Nacional

Facultad Regional Buenos AiresIngeniería en Sistemas de

Información

SocketsArquitectura cliente-servidor

Sistemas Operativos

Page 2: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Sockets – Introducción

Socket (enchufe) Canal de comunicación entre procesos no emparentados

El proceso padre y el hijo comparten las variables y los descriptores. Estos

eventualmente pueden ser usados para comunicarse

Dos procesos sin relación de parentesco no pueden compartir

información, mucho menos si estos están en computadoras diferentes.

Socket

Page 3: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Sockets – Ejemplo

Send(“Hola Mundo”…);

Sistema Operativo

Componente de Red

Recv(variable…);

Sistema Operativo

Componente de Red

Ejemplo de comunicación de dos procesos

Page 4: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Sockets – Estados

1) Crear socket

2) Asociar a una IP y puerto

3) Configurar el estado de escucha y esperar conexiones

Servidor

Cliente

4) Crear socket

5) Conectar a IP y puerto

6) Aceptar conexión y asignar un descriptor único para esa conexión

……

……

……

……

Page 5: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Sockets – Comandos

1) Int iSock = socket(…);

2) bind(iSock, {ip/puerto});

3) listen(iSock);Servidor

Cliente

4) Int cliSock = socket(…);

5) connect(cliSock, {ip/puerto});

6) Int newSock = accept(iSock);

Conexión Establecida!

Page 6: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Inicio / Ejecutar... / cmd

# telnet www.google.com.ar 80

GET / HTTP/1.1

Host: www.google.com.ar

Sockets – Ejemplo

Page 7: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Sockets – Send/Recv

Servidor Cliente

send(newSock, buffer); recv(cliSock, buffer);

Conexión Establecida!

recv(newSock, buffer); send(cliSock, buffer);

Page 8: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 0.0.0.0:60393 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:111 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTENtcp 0 0 127.0.0.1:25 0.0.0.0:* LISTENtcp 0 0 192.168.2.105:22 192.168.2.101:57804 ESTABLISHEDtcp 0 132 192.168.2.105:22 192.168.2.88:3774 ESTABLISHEDtcp 0 0 192.168.2.105:22 192.168.2.101:47939 ESTABLISHEDtcp6 0 0 :::22 :::* LISTENudp 0 0 0.0.0.0:38659 0.0.0.0:*udp 0 0 0.0.0.0:701 0.0.0.0:*udp 0 0 0.0.0.0:68 0.0.0.0:*udp 0 0 0.0.0.0:111 0.0.0.0:*

Sockets – netstat# netstat -na

Linux :: netstat –nap (incluye el proceso)

Page 9: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Sockets – Problema

connect();

connect();send();

sock1= accept(iSock);recv(sock1);sock2= accept(iSock);recv(sock2);

connect();

Servidor

??

Un solo proceso, funciones bloqueantes, varios sockets simultáneos

Page 10: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Sockets – ProblemaUn solo proceso, funciones bloqueantes,

varios sockets simultáneos

Varios threads?

Varios procesos?

Sockets con select?

Polling?

No se puede?