pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio:...

34
1 Università degli Studi di Pisa Dipartimento di Informatica

Transcript of pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio:...

Page 1: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 1

������� ������� ��� ����� � ��������

�������������� ����

Università degli Studi di PisaDipartimento di Informatica

Page 2: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 2

SCHEMA DELLA PRESENTAZIONE

� � � � � ������� � ��� �� ��� �� ����������������� ������� � �� � ��� �� ������� ��������� �� ���������� ��� ������

Page 3: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 3

JAVA: IL CONCETTO DI STREAM,

� � ������������� ��� ��� �� ���� !������ "���#�$ ����

� % �������� �� ��������&� ����� �� ������� �� �� ����������� ���%�' �(�� ��� �)��� �� ���� � �� �� *+

� � � � � �� ����%�' , -���������� ���� �������, )����� �� �� �� �� �������� ����� � � � ����� ��� (���������� ��� ����������� � ������+

…..….. ReadWrite

• .&�������� ���/ � �������� ��� ���� ���� ����

� % ����)������ � ������ ���� ��� ����� ����������������&���� ��� ���� ����

!�����, �������� ��������� � 0��' ������ ���1�%� ��������������� � ��� �������������� )��

Page 4: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 4

JAVA: IL CONCETTO DI STREAM

2���������3���� ���������� �����,

� � � �� ���&���� � �� 0%0'

� ���� �# ��� ����� �#

� �������4� ���

� -���� ��, 4� ���� &�������� ���� � �������� �����(���������+ ���-�����)� �35 �&������ � �5 ������� (�������������� � ���� � � � � ������� � �& %�' � � -���� �*+1

� � �5 ���3����� ��������� � ������������������������������, � �� ������������� ��� 677�-#�� ����� ���� �3� �� ������ �� ����� ������������ ������� ��� 87�-#�� �� ��� � 97�-#��+

Page 5: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 5

JAVA: USO DEGLI STREAM PER LA PROGRAMMAZIONE DI RETE

2�� �������������� ������� 4����������,

� ��������� �� ���� ���,:#�� ��#' ������ ��� � � � ������ ��� -#�� �3������ �������� ������ � ������ ���-#�� ������� �� �����3��� � � �:#�� ��#% ���� ��� �� ��� � ����� ���-#���� � ���������-#�12� � � �� � ��������; ����� � ��-#��

� ��������� �� ���� ���� ��,� ��� ���� ��� ������� �� � � ����1� ��� �� ����������< �������������� ���������� �� ��� < ���������� ����

Page 6: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 6

JAVA: STREAMS DI BASE

� ��������-#��,���������������������� ' ������ ���

= ���� ���-�,������������������� � ����(� � -+��!��" � %' !>����� ?���������� � ���(-#� @A���+��!��" � %' !>����� ?���������� � ���(�#�� @A��� ��� �))�� ��� � ��3+��!��" �%' !>����� ?

� ����(��� -+ �������� � ' ����� ������ -#� �������� � ����&� ��������

B ��������� �� �������� � �� � � �������� �� ������ ���-#��1� ���� � � �����% ���� ���

Page 7: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 7

JAVA: STREAMS DI BASE

. �����' ������ ��� � �������� � ��� �� �����3�����������1

. � ��������� ������� � ���� ���� ��������������������� ���%�'()�� �� ��� *+�1

.&����� ���� �� ����� � ��� ��/ ���3���������� ���� (�,�������� �� � �)��*+1

Page 8: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 8

JAVA STREAMS: FILTRI

% ���� ��� ' ����� ������ � �� � �� � ��������� ������������ -��� ������ ������������ �����4���� ����������������3�����������1�� �� �� � )� ��� ���C ���� ���������-�, ������)�����

applicazioneinteri

bytes

buffered bytes

file (data.txt)

DataOutputStream

BufferedOutputStream

FileOutputStream

� �' ������ ���<���" � �' ������ ���(��" :�))��' ������ ���(

��" 0��' ������ ���(D��1�>�E+++

FILTRO

Page 9: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 9

JAVA STREAMS: FILTRI

� �' ������ ������ � � �� ���)���� ��� ������� ��������� � � � � �� �

�4� � ���-#�� ��� ��������� � ����1� ��� �������������,

� ��-����)� ������ � ���:��� (-��� -+��3��� � %' !>����� ?� ��-����)� ������ � ���% � (� � �+��3��� � %' !>����� ?� ��-����)� ������ � ���� ��-� (���-� �+��3��� � %' !>����� ?

**%� )����� ������ � ��4� � ���-#�� �3������ � ��������� �����1 "���� ���� ����������,�• � ��� F8�-���-��G �� ������ �� ����• )�����F8�-���%!!!HI��)���� ����� ��0�������������������������������������������� �� ��� ��� ����-�� ��� ����� �� �����-��������������� � � � � 1

Page 10: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 10

JAVA STREAMS: BUFFERIZZAZIONE

:�))��' ������ ���� ��������� ��4� � ���-#���� �� �-�))��:�(� -#�� ��#+

� ���� � ����� : ��� ���� 4� �������������)����� �������� ����� ����� �,� :�5 �� �� �� �))������ ������� ���)���3 ����� ����,� �����, -��1)���3�(�+ �� -�� 5 � �-�))�� ����������

� � ��� ��� ���: ��/ ������-���� � ��� ���������������� �� )����� ��������-���� ����)����(I68�-#��+ �� �� � ������������������ �

� ��-����:�))��' ������ ���(' ������ ��� ���+� ��-����:�))��' ������ ���(' ������ ��� ��� � �

-�))�� ��+

Page 11: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 11

JAVA STREAMS: BUFFERIZZAZIONE

• � ���������5 ������� � � ��� ���� J 2� �5 ������������ � ����� ������� ��� ���-�))�� 4� ���C �� ������� ��������� ����

• !�����,�� ���� � ��������� ��� ���� J 2�� � ���� ����3��� (F77�-#��+���� ������$ J J �1 � ������ �

:�))�' ������ ��� :� �(��� ��� ���-�))��<�678��-#��+� �� ������������ ������������ � ����� � �������3���

�� ��� � ���-������ �)� ��� � ���35� � ����-�))������ � ������ ��������� ���� -�))�� �� -�))�� � �� ���������� �� ��� �� � �������� ����������� ������ � ��/ � ��� �

�������3����• � ������ , ))������� )���3 ���� ���� ���� �� � ���� ��

���� ���3���

Page 12: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 12

JAVA STREAMS: INPUTSTREAMS

��-����-���������� % ���� ��������,� ��-����-����� � � ��(+��3��� � %' !>����� � ��-��� � � ��(-#�@A� ���+��3��� � %' !>����� � ��-������ � ����(�� �� +��3��� � %' !>�����

• � ��� �� � � �� -#������ ������4� � �� ����� ��������

• :�))�% ���� ���, �)� ��� � �-�))��: �3��� �������� � ��� �1 K � ����&�� �����3�� �� ������ ��4� � �����-#�� ���� ���� ����� ����� ������-#�� �� ������� �-��� � �:1�% ���� ������������� ������ ���� ��������� �-#�� ����� �-��������� ������ 4������ ��1�� �� L����-#�� ��� ���� �� ������������ � -�))�����

�������� ������ �� M��� ���������-����

Page 13: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 13

BYTE ARRAY INPUT/OUTPUT STREAMS

������ :#�� ��#' ������ ��� (�+������ :#�� ��#' ������ ��� (��� ���+• ���������� �� 4�������������� � � ��������-#�� �����3�

�� ������������������� ���� �� ��������� � �� �-�))��������� ��� ��� ����-�� (��� ��� ����)����<�F8�-#��+1

• 4� ����� -�))� �������� � ������ ��� ��� ������������������ �

BUFFERByteArrayOutputStream

puntatore all’ultimo elemento inserito

Page 14: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 14

BYTE ARRAY INPUT/OUTPUT STREAMS NELLA COSTRUZIONE DI PACCHETTI UDP

N �����-���� ������ � )����� ��� :#�� ��#' ������ ����

� �' ������ ��� ��<� � � �' ������ ���( � �:#�� ��#' ������ ��� ( ++

� ����� � ������� ��� � -�))��: ������� ��� :#�� ��#' ������ ���� � �� ���#����-#�� ��� ��� ��� ������������ ��� ����� ���:

� -#� @A -�� < -��1 ��:#�� ��#(�+

2���� ���� ���3��� � � �� ����������� �� 4�����������

datirete

DataOutputStream ByteArrayOutputStream

Buffer

ByteArray Pacchetto

Page 15: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 15

BYTE ARRAY INPUT/OUTPUT STREAMS

������ :#�� ��#% ���� ��� (��#�� @A -�) +������ :#�� ��#% ���� ��� (��#�� @A -�) ��� �))�� ��� � ��3�+

� 2� ������ ��������-#�� ��������������� � ���� ����������-#� -�)1

� � ����� ����������� � ��3�-#�� � ��� ������������� �))��1� !& �����-����� �� � � � �% ���� ���

" ����� ���� ���3��� � � � ������,

pacchetto Byte array

ByteArrayInputStream DataInputStream

Dati

Page 16: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 16

BYTE ARRAY INPUT/OUTPUT STREAMS

� . ������:#�� ��#% ����' ������ ��� )����� ���&� ���������� ��4������� ���� ( �3� ������+ ����� ��1� . ���)������ � �4� � ���-#���5 �������1

� � �� ������ :#���#' �����% ���� ���� ��/ ���� ���� ��������� ���������-#��� ����������� �� �����������

� �� -�))� � �� ��������� ��� :#�� ��#' ������ ��� -����� �������� (�� �������&��������� ���� ����� <�7+���

� -��1���(+

� �����������:#�� ��# � �������� -�))�O

Page 17: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 17

BYTE ARRAY INPUT/OUTPUT STREAMS

%�����������)�����,� � �� �������������������� � �� �� ���3����� ���� P�1��1Q?�� ���� P�1 �1Q?������������ ������������ ��R����������������� �� ($ ����% ���@A+��!��" ��&'�������

R���)� �� � ����������

% �� ����� �<*1?��� ����<*?� ����� �������<� � � ����� ���� (��+?:#�� ��#' ������ ��� -���<� � :#�� ��#' ������ ���(�+?� �' ������ �������� <� � � �' ������ ��� (-���+?-#��@�A����<� � �-#� @87A?� �����������<� � � ��������(�� ���1� ��3 � �����+

Page 18: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 18

BYTE ARRAY INPUT/OUTPUT STREAMS

���(��� �<6?��M�67?��SS+R����1� ���� �(�+?���<�-���1��:#�� ��#(+?��1��� �(�� 7 ��1� ��3+?��1��. ��3(��1� ��3+?��1� �(��+?-���1���(+?����1� ���� J 0(DQQQE+?���<�-���1��:#�� ��#(�+?��1��� � (�� 7 ��1� ��3+?��1��. ��3 (��1� ��3+?��1� � (��+?-���1��� (�+?

TT

Page 19: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 19

BYTE ARRAY INPUT/OUTPUT STREAMS

�� ���� P�1��1Q?�� ���� P�1 �1Q?��-�������� = ����� �� ���"����R����������������� �� ($ ����% ���@A+��!��" ��&'�������

R�� )� �� � ����������

��� �����<*?� ����� ������� <���" � ����� ���� (����+?�#�� @�A�-�))��<���" ��#�� @877A?� �����������<���" � ��������(-�))� �-�))�1� ��3+

Page 20: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 20

BYTE ARRAY INPUT/OUTPUT STREAMS

�� (��� �<6?��M67?��SS+R��1����(��+?:#�� ��#% ���� ��� -� <� �

:#�� ��#% ���� ���(��1��� � 7 ��1��. ��3(++� �% ���� ��������<� � � �% ���� ���(-� +?� � >�< ����1��% �(+?� #���1���1��� �� (>+?��1����(��+?-� <� � :#�� ��#% ���� ���(��1��� �(+ �7� ��1��. ��3(++?����<� � � �% ���� ���(-� +?� ��� � #<����1��� J 0(�+?� #���1���1��� �� (+?TT

Page 21: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 21

BYTE ARRAY INPUT/OUTPUT STREAMS

� � � ������������ � �� �������� � ���� � �������� ������ � � � ����� �� ���� ����� ����-- � ���� ��;������

� !�����,� ������� ����� � ������� �� ���3������ � ��������

� ��� �� ����3������ � ������� �3

� ��� ���� ����� ��� � ����� �� � ��� � �� ���� �3� ������3��� �������

� ��� ���3������ ����� � ������� ������������������������ � � �������� ��

� "������� ���� � � ))��-��, �������� �� �� �� �� )��� ������� S �� ��)�������� ���

Page 22: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 22

INVIO DI OGGETTI SULLA RETE: LA SERIALIZZAZIONE

� ��������� ,

� �� � � �� �� ����� � 4������������� �3������ � �� ��)����������-� � � ��4� � ���-#��1

� �� �4� �� ��/ ��������� �� ���� �������� ������������ �&������1

� �&������� ��� ���� �)� ���� ��� �� � � ����� �3������ ����&� ��)����������-�1

� � ������� ����� �� ����� ' -P��' ������ ���(��1' -P��% ���� ���+ �������� ���' -P�� (��1 ��' -P��+1

Page 23: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 23

INVIO DI OGGETTI SULLA RETE: LA SERIALIZZAZIONE

!�����, � ����� � ���� ����������� � ������� �� ����1�� ��� ����/ �� �������� ���� � �� ��������� �� �� � ������ � ���� ��� ���������� ���� �� �� ��������)��� � ��� ���� ���� ��� ������)�������� ���� �1

%������ ��/ � ��� ����� � � ��������� �� ��� ����� � ���( ������� � ������)��� ������� ��� ������)���+1

��-�������� �� � ����� �� ������-�R ����� � �� ��������)���?

����� � �� ��� ������)���*****T

Page 24: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 24

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER

• � ������������� I�.��• ��3������ ��� ������,�� �3����(�� ����+ )�� ���������

������ ��� ���� �� �)���*1 B ������� 3�����(����� ��+ ���� � �������������� ���� ����1

• ������ �� ���������� ��� ������,�� �������(�� ����+)�� ����4���3�������� �� �� (����������� ��� � ��� ����� � -+1�% ������� ��� �� ���3��� � ��������� �������1

Server Host Client Host

Processo Server

Servizio

Processo Client

Page 25: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 25

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER

• �� � ������� � ������� �� ��

� � ������� %����������3����S ���� �� ������3�� ��������������������

� ��������� �� �������� ��� � � ��� ������ � � �������#�(������#+�S����� � ����������� ������� ���������������(��� ���������������� "= %+

• ����� < �4� � �� � ����� ������� ��� ��� �� ������� � � ����� ��� ��� ��� �� ���� ��� �������� � � ����� ���� (����������+ �3���-������ ��� � �4� � �� � ����� �� � ����� ���� �����������-���

Page 26: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 26

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER

• � ������� ����� ������ ���� ����� �4� ���������

���� � ���3��� �� �� ���� �� � ���� ��2������ ���������� �� �2

������

• � ��� ����������� ���,�

� � #J �� � ���� (���� 6F+� ,� � ����� � ����� �� � � �� ����� ����� �� ��� �������1�%����� � �� ������ ������ �� ��������� ��� �� �� ����� �&��1�

� !�3�� � ���(���� H+,� � ����� � ����� �� � � �4� � ��� ����� �? �� ��� ����� ������ ���&� ��� �� � ����� ������������� �?�� ���� ��������� � ���������� � ����� ��(�������������&))��-����C ������+

Page 27: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 27

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER

� ������� ���� �����,��� ���� ���� �� ���� ���� ���

2� ���� �' �� ��• �� ��� � ���3���� ��� ���� • �� ��������� �� ����� � ������ ������ �� ����3��� ���

� �� ���� �� �� ��� �• ��� ������� ���� ��� ��4� � �� � ����� �������

�� ���� �����• %����� � �3�� �� �3���� � �� ����

�������� �4� ����, ��� � ����� � �������� � �� �� ���������� �� ������� ����3��� ���� --������ ������������� ��� ����3��� ���� � �������� � ���� � ����������

Page 28: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 28

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER: SERVERS CONNECTION ORIENTED

EchoClient1 EchoClient2EchoServer

messaggio

eco

Page 29: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 29

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER

� ������� ���� �����,��� ���� ���� �� ���� ���� ���

2� ���� ���

• J ���� ����� �� � �� ��� ����3��� �� ������������������� ��������������������

• �� ���� )�� ��������������

• � ���������� ���� �� �� ���� ,�� ����������� (�����3������+�5 �����-�� � �� ����� � �������� � ������ �� ������

Page 30: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 30

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/SERVER SERVERS CONNECTIONLESS

EchoClient1 EchoClient2EchoServer

messaggio

eco

Page 31: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 31

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER

� ������� ���� �����, ������� � �� ���� �

� ��� �������, � �� � � ������� ���� ����� � �� ��� ���������1!�����, !�3�� ��� �� ���� ���� �� �� �������� �� ���� �� ����

� ��� �� ���� �, �� � � �� ����������� � �� �� ��������� � ���� �� ���� �• ������� ���� ��3����� �� ���� ���� �• �������� ���������� � -���� ��

Page 32: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 32

IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER

� ������� ���� �����,��� �� ������

� ��� � ������,� � �� �� � ������ �� )������ ���� ����� ����� ����������� � �������� � ������(� #J �� !�3�� ���+

� ������ ����,• ������ � ������&� �� ���������������� 1 !�����, )��

���)��� �� ���)��� -����3�1 ' ����������������� ��������&�������-������������

• ������ � ������������ � �����, !�����,�2�� ����������� 4� �� � ���� � ����� �� ��� ����� �4���&������ ����� ������ ���� �� �� ���� ���������)� � 4������ ��1

Page 33: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 33

ESERCIZIO: PARADIGMA CLIENT/SERVER

� �����3�� �� �������� � ����� (����) �" �$ �������3�)�� ���� ������� �������, ��������� � ���� ��� ������ ��� �� ���������� ����� ��� ������ G6 G8 GF *1 6 �� �4� �1. � ����� ��� ����� ��� 2�� �� �� � ��� 5 �� ���� �� ���� ���1� �����3�� �� ����� �� �� ����� � �� (����) �" �$ ������ �������(����) �" �$ ����� ����� ����� �������1

.&�������� ����� � ���3��� ���� ���� � ����)�� ������������������� 4� �� 3 ���� ���� �������������3���

� �������(����) �" �$ ����� ����� ����� �� ���� �1 � ������)� �� � ��3�� �3�������� ���3������ ��� �� ��������� � �������5 ������������������ � ���� � ��3�� ������ �� �� �����3����������1 ' � � �3�� �������� �� ����� � ���� �1

* ��������,�%����� � ��������� ���� �� ���3�������� 4���� �� 4������������ )��������� ��� ����������� )� ��������� 1� ��������� ������:#�� ��#' ������% ���� ��� ������ ���� ������� ��� ���3���1

Page 34: pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio: calcolo distribuito del massimo ˝ ˘ ˆ 3 ) ˇ ˇ ˇ 1 ’ ˘ ) ˇ ˇ ˇ ˆˆ 67 ˇˇ

�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 34

ESERCIZIO: CALCOLO DISTRIBUITO DEL MASSIMO

� ���� ������� ��� ���� ������������ ����������� �3������� �)�����������������������1 ' � ��)���������������� ��67 ������ �� 2���������������������� �1� ������� ���3��� ��)������������� ���� ��� �� �������� �� ������� ��� �������)������3�������� ����������� ������������ ���� ������������� 4���������1� ������� ��� �� ��)���� � ������� ��)���� �3��������� � �� )������� ���� �������� ������4����)����1 ' � ����)���� 5 � ����������� � ����� �����1�% ��)������� ��� ���� ��� ��� ��� �������������� �� � ���� ���� � ��� (�� � ��)�������/ ���� ������ ����� ������� �������� � ������ �������������U ���+1�� � ����� � ������ �������� � � �������� ���)� ������ ���� ����� � �����4�������& ���1�. ��������� ������� ������ �� �� �������� 5 � ��������� ���������� ��� 7 1%����� �����)�����, ������� �&� ����������������� � ��������3���1