Top Banner
Sockets programming Sockets programming
26

Sockets programming

Mar 16, 2016

Download

Documents

Dotty

Sockets programming. 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. Internet Address Structure. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sockets programming

Sockets programmingSockets programming

Page 2: Sockets programming

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

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

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

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

Socket structureSocket structure

Local Socket Address

Remote Socket Address

Family Type Protocol

Page 7: Sockets programming

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

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

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

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

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

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

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

ConnectionlessConnectionless• SERVER

1. Opening a socket.2. Binding.3. Repeating the steps:

1. Receiving.2. Sending.

Page 15: Sockets programming

ConnectionlessConnectionless• CLIENT.

1. Opening a socket.2. Repeating the steps:

1. Receiving.2. Sending.

3. Closing.

Page 16: Sockets programming

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

Connection-orientedConnection-oriented

• CLIENT.

1. Opening a socket.2. Connecting.3. Repeating the steps:

1. Writing.2. Reading.

4. Closing.

Page 18: Sockets programming

Ejemplo en Java.Ejemplo en Java.

Page 19: Sockets programming

ServerSocketServerSocket• Al implementar un servidor necesitamos crear un objeto

socket llamado “ServerSocket” para escuchar y aceptar conexiones de clientes.

Page 20: Sockets programming

Input StreamInput Stream• Se utiliza la clase DataInputStream.

Para crear un stream del lado del cliente:

Page 21: Sockets programming

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

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

Server outputServer output• En el servidor se pueden utilizar las mismas clases para

enviar informacion al cliente.

• Ejemplo con “PrintStream”:

Page 24: Sockets programming

Para cerrar un socket.Para cerrar un socket.

Page 25: Sockets programming

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

• 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