pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio:...
Transcript of pages.di.unipi.itpages.di.unipi.it/ricci/Lezione06-03-2006.pdf · 2016-02-29 · 34 esercizio:...
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 1
������� ������� ��� ����� � ��������
�������������� ����
Università degli Studi di PisaDipartimento di Informatica
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 2
SCHEMA DELLA PRESENTAZIONE
� � � � � ������� � ��� �� ��� �� ����������������� ������� � �� � ��� �� ������� ��������� �� ���������� ��� ������
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 3
JAVA: IL CONCETTO DI STREAM,
� � ������������� ��� ��� �� ���� !������ "���#�$ ����
� % �������� �� ��������&� ����� �� ������� �� �� ����������� ���%�' �(�� ��� �)��� �� ���� � �� �� *+
� � � � � �� ����%�' , -���������� ���� �������, )����� �� �� �� �� �������� ����� � � � ����� ��� (���������� ��� ����������� � ������+
…..….. ReadWrite
• .&�������� ���/ � �������� ��� ���� ���� ����
� % ����)������ � ������ ���� ��� ����� ����������������&���� ��� ���� ����
!�����, �������� ��������� � 0��' ������ ���1�%� ��������������� � ��� �������������� )��
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 4
JAVA: IL CONCETTO DI STREAM
2���������3���� ���������� �����,
� � � �� ���&���� � �� 0%0'
� ���� �# ��� ����� �#
� �������4� ���
� -���� ��, 4� ���� &�������� ���� � �������� �����(���������+ ���-�����)� �35 �&������ � �5 ������� (�������������� � ���� � � � � ������� � �& %�' � � -���� �*+1
� � �5 ���3����� ��������� � ������������������������������, � �� ������������� ��� 677�-#�� ����� ���� �3� �� ������ �� ����� ������������ ������� ��� 87�-#�� �� ��� � 97�-#��+
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 5
JAVA: USO DEGLI STREAM PER LA PROGRAMMAZIONE DI RETE
2�� �������������� ������� 4����������,
� ��������� �� ���� ���,:#�� ��#' ������ ��� � � � ������ ��� -#�� �3������ �������� ������ � ������ ���-#�� ������� �� �����3��� � � �:#�� ��#% ���� ��� �� ��� � ����� ���-#���� � ���������-#�12� � � �� � ��������; ����� � ��-#��
� ��������� �� ���� ���� ��,� ��� ���� ��� ������� �� � � ����1� ��� �� ����������< �������������� ���������� �� ��� < ���������� ����
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 6
JAVA: STREAMS DI BASE
� ��������-#��,���������������������� ' ������ ���
= ���� ���-�,������������������� � ����(� � -+��!��" � %' !>����� ?���������� � ���(-#� @A���+��!��" � %' !>����� ?���������� � ���(�#�� @A��� ��� �))�� ��� � ��3+��!��" �%' !>����� ?
� ����(��� -+ �������� � ' ����� ������ -#� �������� � ����&� ��������
B ��������� �� �������� � �� � � �������� �� ������ ���-#��1� ���� � � �����% ���� ���
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 7
JAVA: STREAMS DI BASE
. �����' ������ ��� � �������� � ��� �� �����3�����������1
. � ��������� ������� � ���� ���� ��������������������� ���%�'()�� �� ��� *+�1
.&����� ���� �� ����� � ��� ��/ ���3���������� ���� (�,�������� �� � �)��*+1
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 8
JAVA STREAMS: FILTRI
% ���� ��� ' ����� ������ � �� � �� � ��������� ������������ -��� ������ ������������ �����4���� ����������������3�����������1�� �� �� � )� ��� ���C ���� ���������-�, ������)�����
applicazioneinteri
bytes
buffered bytes
file (data.txt)
DataOutputStream
BufferedOutputStream
FileOutputStream
� �' ������ ���<���" � �' ������ ���(��" :�))��' ������ ���(
��" 0��' ������ ���(D��1�>�E+++
FILTRO
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 9
JAVA STREAMS: FILTRI
� �' ������ ������ � � �� ���)���� ��� ������� ��������� � � � � �� �
�4� � ���-#�� ��� ��������� � ����1� ��� �������������,
� ��-����)� ������ � ���:��� (-��� -+��3��� � %' !>����� ?� ��-����)� ������ � ���% � (� � �+��3��� � %' !>����� ?� ��-����)� ������ � ���� ��-� (���-� �+��3��� � %' !>����� ?
**%� )����� ������ � ��4� � ���-#�� �3������ � ��������� �����1 "���� ���� ����������,�• � ��� F8�-���-��G �� ������ �� ����• )�����F8�-���%!!!HI��)���� ����� ��0�������������������������������������������� �� ��� ��� ����-�� ��� ����� �� �����-��������������� � � � � 1
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 10
JAVA STREAMS: BUFFERIZZAZIONE
:�))��' ������ ���� ��������� ��4� � ���-#���� �� �-�))��:�(� -#�� ��#+
� ���� � ����� : ��� ���� 4� �������������)����� �������� ����� ����� �,� :�5 �� �� �� �))������ ������� ���)���3 ����� ����,� �����, -��1)���3�(�+ �� -�� 5 � �-�))�� ����������
� � ��� ��� ���: ��/ ������-���� � ��� ���������������� �� )����� ��������-���� ����)����(I68�-#��+ �� �� � ������������������ �
� ��-����:�))��' ������ ���(' ������ ��� ���+� ��-����:�))��' ������ ���(' ������ ��� ��� � �
-�))�� ��+
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 11
JAVA STREAMS: BUFFERIZZAZIONE
• � ���������5 ������� � � ��� ���� J 2� �5 ������������ � ����� ������� ��� ���-�))�� 4� ���C �� ������� ��������� ����
• !�����,�� ���� � ��������� ��� ���� J 2�� � ���� ����3��� (F77�-#��+���� ������$ J J �1 � ������ �
:�))�' ������ ��� :� �(��� ��� ���-�))��<�678��-#��+� �� ������������ ������������ � ����� � �������3���
�
�� ��� � ���-������ �)� ��� � ���35� � ����-�))������ � ������ ��������� ���� -�))�� �� -�))�� � �� ���������� �� ��� �� � �������� ����������� ������ � ��/ � ��� �
�������3����• � ������ , ))������� )���3 ���� ���� ���� �� � ���� ��
���� ���3���
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 12
JAVA STREAMS: INPUTSTREAMS
��-����-���������� % ���� ��������,� ��-����-����� � � ��(+��3��� � %' !>����� � ��-��� � � ��(-#�@A� ���+��3��� � %' !>����� � ��-������ � ����(�� �� +��3��� � %' !>�����
• � ��� �� � � �� -#������ ������4� � �� ����� ��������
• :�))�% ���� ���, �)� ��� � �-�))��: �3��� �������� � ��� �1 K � ����&�� �����3�� �� ������ ��4� � �����-#�� ���� ���� ����� ����� ������-#�� �� ������� �-��� � �:1�% ���� ������������� ������ ���� ��������� �-#�� ����� �-��������� ������ 4������ ��1�� �� L����-#�� ��� ���� �� ������������ � -�))�����
�������� ������ �� M��� ���������-����
�
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 13
BYTE ARRAY INPUT/OUTPUT STREAMS
������ :#�� ��#' ������ ��� (�+������ :#�� ��#' ������ ��� (��� ���+• ���������� �� 4�������������� � � ��������-#�� �����3�
�� ������������������� ���� �� ��������� � �� �-�))��������� ��� ��� ����-�� (��� ��� ����)����<�F8�-#��+1
• 4� ����� -�))� �������� � ������ ��� ��� ������������������ �
BUFFERByteArrayOutputStream
puntatore all’ultimo elemento inserito
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 14
BYTE ARRAY INPUT/OUTPUT STREAMS NELLA COSTRUZIONE DI PACCHETTI UDP
N �����-���� ������ � )����� ��� :#�� ��#' ������ ����
� �' ������ ��� ��<� � � �' ������ ���( � �:#�� ��#' ������ ��� ( ++
� ����� � ������� ��� � -�))��: ������� ��� :#�� ��#' ������ ���� � �� ���#����-#�� ��� ��� ��� ������������ ��� ����� ���:
� -#� @A -�� < -��1 ��:#�� ��#(�+
2���� ���� ���3��� � � �� ����������� �� 4�����������
datirete
DataOutputStream ByteArrayOutputStream
Buffer
ByteArray Pacchetto
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 15
BYTE ARRAY INPUT/OUTPUT STREAMS
������ :#�� ��#% ���� ��� (��#�� @A -�) +������ :#�� ��#% ���� ��� (��#�� @A -�) ��� �))�� ��� � ��3�+
� 2� ������ ��������-#�� ��������������� � ���� ����������-#� -�)1
� � ����� ����������� � ��3�-#�� � ��� ������������� �))��1� !& �����-����� �� � � � �% ���� ���
" ����� ���� ���3��� � � � ������,
pacchetto Byte array
ByteArrayInputStream DataInputStream
Dati
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 16
BYTE ARRAY INPUT/OUTPUT STREAMS
� . ������:#�� ��#% ����' ������ ��� )����� ���&� ���������� ��4������� ���� ( �3� ������+ ����� ��1� . ���)������ � �4� � ���-#���5 �������1
� � �� ������ :#���#' �����% ���� ���� ��/ ���� ���� ��������� ���������-#��� ����������� �� �����������
� �� -�))� � �� ��������� ��� :#�� ��#' ������ ��� -����� �������� (�� �������&��������� ���� ����� <�7+���
� -��1���(+
� �����������:#�� ��# � �������� -�))�O
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 17
BYTE ARRAY INPUT/OUTPUT STREAMS
%�����������)�����,� � �� �������������������� � �� �� ���3����� ���� P�1��1Q?�� ���� P�1 �1Q?������������ ������������ ��R����������������� �� ($ ����% ���@A+��!��" ��&'�������
R���)� �� � ����������
% �� ����� �<*1?��� ����<*?� ����� �������<� � � ����� ���� (��+?:#�� ��#' ������ ��� -���<� � :#�� ��#' ������ ���(�+?� �' ������ �������� <� � � �' ������ ��� (-���+?-#��@�A����<� � �-#� @87A?� �����������<� � � ��������(�� ���1� ��3 � �����+
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 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
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 19
BYTE ARRAY INPUT/OUTPUT STREAMS
�� ���� P�1��1Q?�� ���� P�1 �1Q?��-�������� = ����� �� ���"����R����������������� �� ($ ����% ���@A+��!��" ��&'�������
R�� )� �� � ����������
��� �����<*?� ����� ������� <���" � ����� ���� (����+?�#�� @�A�-�))��<���" ��#�� @877A?� �����������<���" � ��������(-�))� �-�))�1� ��3+
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 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
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 21
BYTE ARRAY INPUT/OUTPUT STREAMS
� � � ������������ � �� �������� � ���� � �������� ������ � � � ����� �� ���� ����� ����-- � ���� ��;������
� !�����,� ������� ����� � ������� �� ���3������ � ��������
� ��� �� ����3������ � ������� �3
� ��� ���� ����� ��� � ����� �� � ��� � �� ���� �3� ������3��� �������
� ��� ���3������ ����� � ������� ������������������������ � � �������� ��
� "������� ���� � � ))��-��, �������� �� �� �� �� )��� ������� S �� ��)�������� ���
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 22
INVIO DI OGGETTI SULLA RETE: LA SERIALIZZAZIONE
� ��������� ,
� �� � � �� �� ����� � 4������������� �3������ � �� ��)����������-� � � ��4� � ���-#��1
� �� �4� �� ��/ ��������� �� ���� �������� ������������ �&������1
� �&������� ��� ���� �)� ���� ��� �� � � ����� �3������ ����&� ��)����������-�1
� � ������� ����� �� ����� ' -P��' ������ ���(��1' -P��% ���� ���+ �������� ���' -P�� (��1 ��' -P��+1
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 23
INVIO DI OGGETTI SULLA RETE: LA SERIALIZZAZIONE
!�����, � ����� � ���� ����������� � ������� �� ����1�� ��� ����/ �� �������� ���� � �� ��������� �� �� � ������ � ���� ��� ���������� ���� �� �� ��������)��� � ��� ���� ���� ��� ������)�������� ���� �1
%������ ��/ � ��� ����� � � ��������� �� ��� ����� � ���( ������� � ������)��� ������� ��� ������)���+1
��-�������� �� � ����� �� ������-�R ����� � �� ��������)���?
����� � �� ��� ������)���*****T
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 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
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 25
IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER
• �� � ������� � ������� �� ��
� � ������� %����������3����S ���� �� ������3�� ��������������������
� ��������� �� �������� ��� � � ��� ������ � � �������#�(������#+�S����� � ����������� ������� ���������������(��� ���������������� "= %+
• ����� < �4� � �� � ����� ������� ��� ��� �� ������� � � ����� ��� ��� ��� �� ���� ��� �������� � � ����� ���� (����������+ �3���-������ ��� � �4� � �� � ����� �� � ����� ���� �����������-���
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 26
IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER
• � ������� ����� ������ ���� ����� �4� ���������
���� � ���3��� �� �� ���� �� � ���� ��2������ ���������� �� �2
������
• � ��� ����������� ���,�
� � #J �� � ���� (���� 6F+� ,� � ����� � ����� �� � � �� ����� ����� �� ��� �������1�%����� � �� ������ ������ �� ��������� ��� �� �� ����� �&��1�
� !�3�� � ���(���� H+,� � ����� � ����� �� � � �4� � ��� ����� �? �� ��� ����� ������ ���&� ��� �� � ����� ������������� �?�� ���� ��������� � ���������� � ����� ��(�������������&))��-����C ������+
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 27
IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER
� ������� ���� �����,��� ���� ���� �� ���� ���� ���
2� ���� �' �� ��• �� ��� � ���3���� ��� ���� • �� ��������� �� ����� � ������ ������ �� ����3��� ���
� �� ���� �� �� ��� �• ��� ������� ���� ��� ��4� � �� � ����� �������
�� ���� �����• %����� � �3�� �� �3���� � �� ����
�������� �4� ����, ��� � ����� � �������� � �� �� ���������� �� ������� ����3��� ���� --������ ������������� ��� ����3��� ���� � �������� � ���� � ����������
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 28
IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER: SERVERS CONNECTION ORIENTED
EchoClient1 EchoClient2EchoServer
messaggio
eco
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 29
IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER
� ������� ���� �����,��� ���� ���� �� ���� ���� ���
2� ���� ���
• J ���� ����� �� � �� ��� ����3��� �� ������������������� ��������������������
• �� ���� )�� ��������������
• � ���������� ���� �� �� ���� ,�� ����������� (�����3������+�5 �����-�� � �� ����� � �������� � ������ �� ������
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 30
IL PARADIGMA DI PROGRAMMAZIONE CLIENT/SERVER SERVERS CONNECTIONLESS
EchoClient1 EchoClient2EchoServer
messaggio
eco
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 31
IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER
� ������� ���� �����, ������� � �� ���� �
� ��� �������, � �� � � ������� ���� ����� � �� ��� ���������1!�����, !�3�� ��� �� ���� ���� �� �� �������� �� ���� �� ����
� ��� �� ���� �, �� � � �� ����������� � �� �� ��������� � ���� �� ���� �• ������� ���� ��3����� �� ���� ���� �• �������� ���������� � -���� ��
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 32
IL PARADIGMA DI PROGRAMMAZIONE CLIENT/ SERVER
� ������� ���� �����,��� �� ������
� ��� � ������,� � �� �� � ������ �� )������ ���� ����� ����� ����������� � �������� � ������(� #J �� !�3�� ���+
� ������ ����,• ������ � ������&� �� ���������������� 1 !�����, )��
���)��� �� ���)��� -����3�1 ' ����������������� ��������&�������-������������
• ������ � ������������ � �����, !�����,�2�� ����������� 4� �� � ���� � ����� �� ��� ����� �4���&������ ����� ������ ���� �� �� ���� ���������)� � 4������ ��1
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 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
�������������� ���������������������� ���������������������� ���������������������� ��������� �� ��� ��� �� ��� ��� �� ��� ��� �� ��� ������ ��� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� ���� � ��� �� ������� �� � ��������������������� � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � � � � � � � � � �� � �� � � � � � ����������� 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