Download - Sockets programming
![Page 1: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/1.jpg)
Sockets programmingSockets programming
![Page 2: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/2.jpg)
Tipos de datos.Tipos de datos.• Tipos de datos mas usados en
programas cliente-servidor:
• u-char• Unsigned 8-bit character.
• u-short• Unsigned 16-bit integer.
• u-long• Unsigned 32-bit integer.
![Page 3: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/3.jpg)
Internet Address Internet Address StructureStructure
• Las direcciones de IPv4 se definen como una estructura (struct en C).
• La estructura guarda un numero binario de 32 bits (IP address).
• Struct in_addr{
u_long s_addr;}
![Page 4: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/4.jpg)
SOCKETSSOCKETS• Un socket actua como un “end point”. Para que 2 procesos
se comuniquen necesitan una estructura socket
• SOCKET ADDRESS STRUCTURE:Struct sockaddr_in
{u_char sin_len;u_short sin_family;u_short sin_port;struct in_addr sin_addr;char sin_zero [8];
}
![Page 5: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/5.jpg)
Campos de la estructura SOCKETCampos de la estructura SOCKET
• Family: IPv4, IPv6, UNIX (Grupo de protocolos).
• Type: stream, datagram, raw (Tipo de socket).
• Protocol: valor de 0 para TCP o UDP.• Local socket address. • Remote socket address.
![Page 6: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/6.jpg)
Socket structureSocket structure
Local Socket Address
Remote Socket Address
Family Type Protocol
![Page 7: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/7.jpg)
Socket TypesSocket Types
Raw Socket.• Utilizado para aplicaciones que usan protocolos que
interactuan directamente con los servicios IP (ej.- ICMP, OSPF).
Application Program
TCP UDP
IP
Physical and data link layers
![Page 8: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/8.jpg)
SOCKET SYSTEM CALLSSOCKET SYSTEM CALLS• Funciones definidas para llamar desde una aplicacion a otra:
• Socket• Bind• Connect• Listen• Accept• Sendto• Recvfrom• Read• Write• Close
![Page 9: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/9.jpg)
Funciones.Funciones.• Socket
• Esta funcion crea un socket.• Int socket (int family, int type, int protocol);
• Bind• Asocia un socket con una direccion local de
socket.• Int bind (int sockfd, const struct socketaddr_in
*localaddr, int localaddrlen);
![Page 10: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/10.jpg)
Funciones.Funciones.• Connect
• Es utilizado por un proceso para establecer una conexion activa con un proceso remoto.
• Int connect (int sockfd, const struct sockaddr_in *serveraddr, int serveraddrlen);
• Listen• Es utilizada unicamente por un servidor TCP. Crea un
socket pasivo para un socket que aun no se conecta.• Int listen (int sockfd, int backlog);
![Page 11: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/11.jpg)
Funciones.Funciones.• Accept
• La utiliza un TCP Server para remover la primera requisicion de conexion que se encuentra en la fila.
• Int accept (int sockfd, const struct sockaddr_in *clientaddr, int * client addrlen);
• Sendto• Es utilizada por un proceso usando UDP para enviar un
mensaje hacia un proceso remoto.• Int sendto (int sockfd, const void *buf, int buflen, int
flags, const struct sockaddr_in *toaddr, int toaddrlen);
![Page 12: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/12.jpg)
Funciones.Funciones.• Read
• Es utilizada por un proceso para recibir datos de otro proceso remoto (se asume que ya hay una conexion abierta - TCP).
• Int read (int sockfd, const void *buf, int buflen)
• Recvfrom• Extrae el siguiente mensaje que llega a un socket.• Int recvfrom (int sockfd, const void *buf, int buflen, int
flags, const struct sockaddr_in *fromaddr, int fromaddrlen);
![Page 13: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/13.jpg)
Funciones.Funciones.• Write
• Usada por un proceso para enviar datos a un proceso remoto (se asume que ya existe conexion activa - TCP).
• Int write (int sockfd, const void *buf, int buflen);
• Close• Es utilizada por un proceso para cerrar un socket y
terminar la conexion.• Int close (int sockfd);
![Page 14: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/14.jpg)
ConnectionlessConnectionless• SERVER
1. Opening a socket.2. Binding.3. Repeating the steps:
1. Receiving.2. Sending.
![Page 15: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/15.jpg)
ConnectionlessConnectionless• CLIENT.
1. Opening a socket.2. Repeating the steps:
1. Receiving.2. Sending.
3. Closing.
![Page 16: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/16.jpg)
Connection-orientedConnection-oriented• SERVER.
1. Opening a socket.2. Binding.3. Listening.4. Repeating the steps:
1. Accepting2. Forking.3. Repeating:
1. Reading.2. Processing.3. Writing.
4. Closing the communication socket.
![Page 17: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/17.jpg)
Connection-orientedConnection-oriented
• CLIENT.
1. Opening a socket.2. Connecting.3. Repeating the steps:
1. Writing.2. Reading.
4. Closing.
![Page 18: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/18.jpg)
Ejemplo en Java.Ejemplo en Java.
![Page 19: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/19.jpg)
ServerSocketServerSocket• Al implementar un servidor necesitamos crear un objeto
socket llamado “ServerSocket” para escuchar y aceptar conexiones de clientes.
![Page 20: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/20.jpg)
Input StreamInput Stream• Se utiliza la clase DataInputStream.
Para crear un stream del lado del cliente:
![Page 21: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/21.jpg)
Input StreamInput Stream
• La clase DataInputStream permite leer lineas de texto y tipo de datos primitivos de Java. Se pueden utilizar metodos como: read, readChar, readInt, readDouble, y readLine,.
• Para recibir un stream del lado del servidor:
![Page 22: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/22.jpg)
Output StreamOutput Stream• En el cliente se crea un output stream para enviar datos al servidor
con las clases PrintStream or DataOutputStream de java.io.
![Page 23: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/23.jpg)
Server outputServer output• En el servidor se pueden utilizar las mismas clases para
enviar informacion al cliente.
• Ejemplo con “PrintStream”:
![Page 24: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/24.jpg)
Para cerrar un socket.Para cerrar un socket.
![Page 25: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/25.jpg)
Bibliografia y sitios Bibliografia y sitios recomendados.recomendados.
• Programacion en Java:• http://www.javaworld.com/javaworld/jw-12-1
996/jw-12-sockets-p2.html
• Socket Programming HOWTO (phyton)• http://www.amk.ca/python/howto/sockets/
![Page 26: Sockets programming](https://reader030.vdocument.in/reader030/viewer/2022020423/56814035550346895dab9855/html5/thumbnails/26.jpg)
• An Introduction to Socket Programming - C.• http://www.uwo.ca/its/doc/courses/notes/
socket/
• Sockets Programming.• http://www.scit.wlv.ac.uk/~jphb/comms/s
ockets.html