Sockets programming. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char...

26
Sockets programming Sockets programming

Transcript of Sockets programming. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char...

Page 1: 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.

Sockets programmingSockets programming

Page 2: 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.

Tipos de datos.Tipos de datos.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.

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Internet Address Internet Address StructureStructure

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;}

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

SOCKETSSOCKETSSOCKETSSOCKETS• 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];

}

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Campos de la estructura SOCKETCampos de la estructura SOCKETCampos 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.

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Socket structureSocket structureSocket structureSocket structure

Local Socket Address

Remote Socket Address

Family Type Protocol

Page 7: 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.

Socket TypesSocket TypesSocket TypesSocket Types

Raw Socket.• Utilizado para aplicaciones que usan protocolos que

interactuan directamente con los servicios IP (ej.- ICMP, OSPF).

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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

SOCKET SYSTEM CALLSSOCKET SYSTEM CALLSSOCKET SYSTEM CALLSSOCKET SYSTEM CALLS

• Funciones definidas para llamar desde una aplicacion a otra:

• Socket• Bind• Connect• Listen• Accept• Sendto• Recvfrom• Read• Write• Close

• Funciones definidas para llamar desde una aplicacion a otra:

• Socket• Bind• Connect• Listen• Accept• Sendto• Recvfrom• Read• Write• Close

Page 9: 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.

Funciones.Funciones.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);

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Funciones.Funciones.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);

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Funciones.Funciones.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);

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Funciones.Funciones.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);

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Funciones.Funciones.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);

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

ConnectionlessConnectionlessConnectionlessConnectionless

• SERVER

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

1. Receiving.2. Sending.

• SERVER

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

1. Receiving.2. Sending.

Page 15: 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.

ConnectionlessConnectionlessConnectionlessConnectionless

• CLIENT.

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

1. Receiving.2. Sending.

3. Closing.

• CLIENT.

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

1. Receiving.2. Sending.

3. Closing.

Page 16: 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.

Connection-orientedConnection-orientedConnection-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.

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Connection-orientedConnection-orientedConnection-orientedConnection-oriented

• CLIENT.

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

1. Writing.2. Reading.

4. Closing.

• CLIENT.

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

1. Writing.2. Reading.

4. Closing.

Page 18: 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.

Ejemplo en Java.Ejemplo en Java.Ejemplo en Java.Ejemplo en Java.

Page 19: 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.

ServerSocketServerSocketServerSocketServerSocket

• Al implementar un servidor necesitamos crear un objeto socket llamado “ServerSocket” para escuchar y aceptar conexiones de clientes.

• Al implementar un servidor necesitamos crear un objeto socket llamado “ServerSocket” para escuchar y aceptar conexiones de clientes.

Page 20: 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.

Input StreamInput StreamInput StreamInput Stream

• Se utiliza la clase DataInputStream. Para crear un stream del lado del cliente:

• Se utiliza la clase DataInputStream. Para crear un stream del lado del cliente:

Page 21: 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.

Input StreamInput StreamInput 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:

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Output StreamOutput StreamOutput StreamOutput Stream• En el cliente se crea un output stream para enviar datos al servidor

con las clases PrintStream or DataOutputStream de java.io.• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

Server outputServer outputServer outputServer output

• En el servidor se pueden utilizar las mismas clases para enviar informacion al cliente.

• Ejemplo con “PrintStream”:

• En el servidor se pueden utilizar las mismas clases para enviar informacion al cliente.

• Ejemplo con “PrintStream”:

Page 24: 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.

Para cerrar un socket.Para cerrar un socket.Para cerrar un socket.Para cerrar un socket.

Page 25: 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.

Bibliografia y sitios Bibliografia y sitios recomendados.recomendados.

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/

• 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. Tipos de datos. Tipos de datos mas usados en programas cliente-servidor: u-char Unsigned 8-bit character. u-short Unsigned 16-bit.

• 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

• 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