Escolar Documentos
Profissional Documentos
Cultura Documentos
POP3,
IMAP
2.5 DNS
servidor WEB
2: Capa Aplicacin
Programacin de Sockets
Objetivo: aprender cmo construir aplicaciones cliente servidor que se comunican usando sockets API para sockets
Fue introducida en BSD4.1 UNIX,
sockets
creados por la aplicacin, Es una interfaz controlada por el OS (una
puerta) a travs de la cual el proceso aplicacin puede tanto enviar como recibir mensajes a/desde el otro proceso de la aplicacin
2: Capa Aplicacin
1981 El socket es explcitamente creado, usado, y liberado por las aplicaciones Sigue el modelo cliente/servidor Hay dos tipos de servicios de transporte va el API de socket: Datagramas no confiables Orientado a un flujo de bytes, es confiable
proceso
Internet
cliente o servidor
servidor o cliente
2: Capa Aplicacin 4
El cliente debe contactar al servidor Proceso servidor debe estar corriendo primero Servidor debe tener creado el socket (puerta) que acoge al cliente El cliente contacta al servidor por: La creacin de un socket TCP local para el cliente Especifica la direccin IP, nmero de puerto del proceso servidor Una vez que el cliente crea el socket: el socket establece una conexin TCP al servidor
por el cliente, el servidor TCP crea otro socket para que el proceso servidor se comunique con ese cliente
TCP provee transferencias de bytes confiables y en orden. Es un pipeline (o tubera) de datos entre el cliente y servidor
2: Capa Aplicacin 5
2: Capa Aplicacin
hacia o desde un proceso. Un input stream (flujo de entrada) est ligado a alguna fuente de entrada para el proceso, eg, teclado o socket.
Un output stream (flujo de salida) est ligado a una salida
2: Capa Aplicacin
Computador Cliente
a TCP Red
desde TCP
2: Capa Aplicacin
Cliente
/* wait for incoming connection connection request */ connectionSocket = welcomeSocket.accept() /* read request from connectionSocket */ */ write reply to connectionSocket*/ /*close connectionSocket*/
TCP
setup
/* create socket, connect to hostid, port=x*/ clientSocket = Socket(hostname,)9876 /* send request using clientSocket*/
10
sentence = inFromUser.readLine();
Enva lnea Al servidor Lee lnea Desde el servidor outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } }
2: Capa Aplicacin 12
13
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); connectionSocket.close();
POP3, IMAP
2.5 DNS
servidor WEB
2: Capa Aplicacin
15
UDP provee transferencia no confiable de grupos de bytes (datagramas) entre cliente y servidor
Cliente
create socket, clientSocket = DatagramSocket() Create, address (hostid, port=x) send datagram request using clientSocket
read request from serverSocket write reply to serverSocket specifying client host address, port number
2: Capa Aplicacin
17
Proceso cliente
2: Capa Aplicacin
18
Crea input stream Crea Socket cliente Traduce hostname a IP usando DNS
}
2: Capa Aplicacin 20
sendData = capitalizedSentence.getBytes();
serverSocket.send(sendPacket);
}
2: Capa Aplicacin
22
Cliente
Crear un socket Conectarlo al servidor Enviar/Recibir datos Cerrar el socket
Cerrar el socket
2: Capa Aplicacin 23
POP3, IMAP
2.5 DNS
servidor WEB
2: Capa Aplicacin
28