100 likes | 202 Views
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.
E N D
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 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.
Sockets – Ejemplo Ejemplo de comunicación de dos procesos Send(“Hola Mundo”…); Recv(variable…); Sistema Operativo Sistema Operativo Componente de Red Componente de Red
Sockets – Estados 1) Crear socket 2) Asociar a una IP y puerto 3) Configurar el estado de escucha y esperar conexiones Servidor 4) Crear socket …………………… 5) Conectar a IP y puerto 6) Aceptar conexión y asignar un descriptor único para esa conexión Cliente
Sockets – Comandos 1) Int iSock = socket(…); 2) bind(iSock, {ip/puerto}); 3) listen(iSock); Servidor 4) Int cliSock = socket(…); 5) connect(cliSock, {ip/puerto}); 6) Int newSock = accept(iSock); Cliente Conexión Establecida!
Sockets – Ejemplo Inicio / Ejecutar... / cmd # telnet www.google.com.ar 80 GET / HTTP/1.1 Host: www.google.com.ar
Sockets – Send/Recv Conexión Establecida! Servidor Cliente send(newSock, buffer); recv(cliSock, buffer); recv(newSock, buffer); send(cliSock, buffer);
Sockets – netstat # netstat -na Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:60393 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 192.168.2.105:22 192.168.2.101:57804 ESTABLISHED tcp 0 132 192.168.2.105:22 192.168.2.88:3774 ESTABLISHED tcp 0 0 192.168.2.105:22 192.168.2.101:47939 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN udp 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:* Linux :: netstat –nap (incluye el proceso)
Sockets – Problema Un solo proceso, funciones bloqueantes, varios sockets simultáneos Servidor connect(); connect(); send(); sock1= accept(iSock); recv(sock1); sock2= accept(iSock); recv(sock2); ? connect();
Sockets – Problema Un solo proceso, funciones bloqueantes, varios sockets simultáneos Varios threads? No se puede? Sockets con select? Varios procesos? Polling?