ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/c++/socket++-1.10/socket++.ps
Revision: 1.1
Committed: Mon Feb 26 15:01:39 2001 UTC (23 years, 9 months ago) by ab11
Content type: application/postscript
Branch: MAIN
CVS Tags: PROJECT_COMPLETION
Log Message:
Networking class. Assumed to be bug free.

File Contents

# Content
1 %!PS-Adobe-2.0
2 %%Creator: dvips, version 5.41 (C) 1986-90 Radical Eye Software
3 %%Title: socket++.dvi
4 %%Pages: 56 1
5 %%BoundingBox: 0 0 612 792
6 %%EndComments
7 %%BeginProcSet: tex.pro
8 /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
9 load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
10 isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
11 Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
12 round 4 exch put dup dup 5 get round 5 exch put setmatrix}B /@letter{/vsize 10
13 N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
14 /vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
15 statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
16 /FBB[0 0 0 0]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
17 0 sf neg 0 0]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N
18 /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar
19 {CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0
20 nn put /ctr 0 N[}B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup
21 type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length
22 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
23 length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{
24 ch-data dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base
25 get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
26 ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width
27 ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask
28 restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn
29 /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put
30 }if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{
31 bop-hook}if /SI save N @rigin 0 0 moveto}B /eop{clear SI restore showpage
32 userdict /eop-hook known{eop-hook}if}B /@start{userdict /start-hook known{
33 start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N
34 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1
35 0 0 -1 0 0]N /BDot 260 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1
36 TR 1 ruley scale rulex 1 false RMat{BDot}imagemask grestore}B /a{moveto}B
37 /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
38 B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B
39 /k{4 M}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
40 B /s{p 3 w}B /t{p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos
41 {/SS save N}B /eos{clear SS restore}B end
42 %%EndProcSet
43 TeXDict begin 1000 300 300 @start /Fa 1 59 df<70F8F8F87005057C840D>58
44 D E /Fb 1 59 df<78FCFCFCFC7806067B8510>58 D E /Fc 8 118 df<000C0000001E000000
45 1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00007FFFFF80
46 FFFFFFC0FFFFFFC07FFFFF80001E0000001E0000001E0000001E0000001E0000001E0000001E00
47 00001E0000001E0000001E0000000C00001A1A7E9E1F>43 D<7F800000FF8000007F8000000780
48 0000078000000780000007800000078000000780000007800000078000000787C000079FF80007
49 FFFC0007F83E0007E00F0007C0078007C00780078003C0078003C0078001E0078001E0078001E0
50 078001E0078001E0078001E0078001E0078001E0078003C007C003C007C0078007E00F8007E01F
51 0007F83E0007FFFC00079FF000038FC0001B257FA41F>98 D<007FC001FFF007FFF80F80F81F00
52 F83E00703C0000780000780000F00000F00000F00000F00000F00000F00000F00000F000007800
53 007800003C00783E00781F00F80F81F007FFE001FFC0007F00151A7B991F>I<0003F0000FFC00
54 1FFE003E3E003C3E00781C0078000078000078000078000078007FFFFCFFFFFCFFFFFC00780000
55 780000780000780000780000780000780000780000780000780000780000780000780000780000
56 78000078000078000078000078000078007FFFF87FFFF87FFFF817257EA41F>102
57 D<FF800000FF800000FF8000000780000007800000078000000780000007800000078000000780
58 0000078000000787FFE0078FFFE00787FFE007807E000780FC000781F8000783F0000787E00007
59 8FC000079F800007BF000007FF000007FF800007FFC00007F3C00007E3E00007C1F0000780F000
60 0780F80007807C0007803C0007801E0007801F00FFF87FF0FFFCFFF0FFF87FF01C257FA41F>
61 107 D<00FC0003FF0007FF801F87E01E01E03C00F07C00F8780078780078F0003CF0003CF0003C
62 F0003CF0003CF0003CF0003CF8007C7800787800787C00F83C00F01E01E01F87E007FF8003FF00
63 00FC00161A7C991F>111 D<03FC700FFFF03FFFF07C03F07001F0E000F0E000F0E000F0F000F0
64 7C00003FE0001FFF0007FFC000FFF00003F800007870003CF0001CF0001CF8001CF8001CFC0038
65 FF00F0FFFFF0E7FFC0E1FE00161A7C991F>115 D<7F81FE00FF83FE007F81FE0007801E000780
66 1E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007
67 801E0007801E0007801E0007801E0007801E0007801E0007803E0007807E0003C0FE0003FFFFE0
68 01FFDFF0007F1FE01C1A7F991F>117 D E /Fd 35 127 df<00C001C0030006000C001C003800
69 3000700070006000E000E000E000E000E000E000E000600070007000300038001C000C00060003
70 0001C000C00A1D7A9914>40 D<8000C0006000300018001C000E00060007000700030003800380
71 0380038003800380038003000700070006000E001C00180030006000C0008000091D7C9914>I<
72 038003800380638CF39EFFFE3FF80FE00FE03FF8FFFEF39E638C0380038003800F107E9214>I<
73 01C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C00001C000
74 01C00001C00001C00001C00011117F9314>I<FFFEFFFEFFFE0F037E8C14>45
75 D<70F8F8F87000000000000070F8F8F8700510798F14>58 D<FFFF80FFFF807FFF800000000000
76 000000007FFF80FFFF80FFFF8011097F8F14>61 D<4000E000F8007C001E000F8007C001F000F8
77 003E001E003E00F801F007C00F801E007C00F800E00040000F157E9514>I<01C00003E00003E0
78 000360000360000770000770000770000770000630000E38000E38000E38000E38000E38001FFC
79 001FFC001C1C001C1C003C1E00380E00FE3F80FE3F8011177F9614>65 D<FFFFFFFF3807380738
80 07380738003800387038703FF03FF0387038703800380038003800380038003800FF00FF001017
81 7E9614>70 D<1FC0007FF000707800201800001C00001C0007FC001FFC003C1C00701C00E01C00
82 E01C00E01C00707C003FFF800F8F8011107E8F14>97 D<FC0000FC00001C00001C00001C00001C
83 00001C00001CF8001DFE001F07001E03001C03801C01C01C01C01C01C01C01C01C01C01C01C01C
84 03801E03001F0E001DFC000CF8001217809614>I<03F80FFC1C1C380870006000E000E000E000
85 E00060007000380E1C1E0FFC03F00F107E8F14>I<007E00007E00000E00000E00000E00000E00
86 000E0007CE000FFE001C3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00
87 301E00383E001FEFC007CFC012177F9614>I<07E00FF01C38301C700CE00EE00EFFFEFFFEE000
88 60007000380E1C1E0FFC03F00F107E8F14>I<007C00FE01CE03840380038003807FFEFFFE0380
89 038003800380038003800380038003800380038003807FFC7FFC0F177F9614>I<07CF001FFF80
90 383B80301800701C00701C00701C003018003838003FF00037C0007000007000003FF8001FFC00
91 3FFE00700F00E00380E00380E00380E003807007003C1E001FFC0007F00011197F8F14>I<FC00
92 00FC00001C00001C00001C00001C00001C00001C78001DFE001F86001E07001C07001C07001C07
93 001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF8FE01317809614>I<03000780
94 0780030000000000000000007F807F800380038003800380038003800380038003800380038003
95 80FFFCFFFC0E187D9714>I<FC0000FC00001C00001C00001C00001C00001C00001DFF801DFF80
96 1C3C001C78001CF0001DE0001FC0001FC0001FE0001EF0001C70001C38001C38001C1C00FE3F80
97 FE3F8011177F9614>107 D<FF80FF800380038003800380038003800380038003800380038003
98 800380038003800380038003800380FFFEFFFE0F177E9614>I<FB8E00FFDF003CF3803CF38038
99 E38038E38038E38038E38038E38038E38038E38038E38038E38038E380FEFBE0FE79E01310808F
100 14>I<FC7800FDFE001F86001E07001C07001C07001C07001C07001C07001C07001C07001C0700
101 1C07001C0700FF8FE0FF8FE01310808F14>I<07C01FF03C78701C701CE00EE00EE00EE00EE00E
102 E00E701C783C3C781FF007C00F107E8F14>I<FCF800FDFE001F07001E03001C03801C01C01C01
103 C01C01C01C01C01C01C01C01C01C03801E03001F0E001DFC001CF8001C00001C00001C00001C00
104 001C00001C0000FF8000FF80001218808F14>I<FE1F00FE7F800EE3800F81000F00000F00000E
105 00000E00000E00000E00000E00000E00000E00000E0000FFF000FFF00011107F8F14>114
106 D<0FD83FF86038C038C038F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E8F14>
107 I<030007000700070007007FFCFFFC07000700070007000700070007000700070E070E070E070C
108 03FC00F00F157F9414>I<FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C
109 07001C07001C07001C07001C1F000FFFE003E7E01310808F14>I<FE3F80FE3F801C1C001C1C00
110 1C1C001C1C000E38000E38000E380006300007700007700007700003E00003E00003E00011107F
111 8F14>I<FF7F80FF7F80380E00380E00380E00380E0039CE0039CE0019CC001B6C001B6C001A6C
112 001A6C001E7C000E78000E780011107F8F14>I<7E3F007E3F001E38000E780007700007E00003
113 E00001C00003C00003E0000770000E78000E38001C1C00FE3F80FE3F8011107F8F14>I<FE3F80
114 FE3F801C1C001C1C001C1C000E1C000E38000E380007380007300007300003700003700001E000
115 01E00001E00001C00001C00001C0000380007380007700007E00003C000011187F8F14>I<3FFF
116 7FFF700E701C7038007000E001C0038007000E001C0738077007FFFFFFFF10107F8F14>I<1C10
117 3F38E7E041C00D047D9614>126 D E /Fe 1 59 df<60F0F06004047D830B>58
118 D E /Ff 38 122 df<00FC7C0183C607078E0607040E07000E07000E07000E07000E07000E0700
119 FFFFF00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E0700
120 0E07000E07007F0FF0171A809916>11 D<00FF000387000707000607000E07000E07000E07000E
121 07000E07000E0700FFFF000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
122 07000E07000E07000E07000E07007F9FE0131A809915>13 D<60F0F07010101020204080040B7D
123 830B>44 D<078018603030303060186018E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C
124 E01C6018601870383030186007800E187E9713>48 D<03000700FF000700070007000700070007
125 0007000700070007000700070007000700070007000700070007000700FFF00C187D9713>I<0F
126 80106020304038803CC01CE01C401C003C003800380070006000C0018001000200040408041004
127 30083FF87FF8FFF80E187E9713>I<0F8010E02070607870382038007800700070006000C00F80
128 00E000700038003C003CE03CE03CC03C4038407030E00F800E187E9713>I<00300030007000F0
129 00F001700370027004700C7008701070307020704070C070FFFF00700070007000700070007007
130 FF10187F9713>I<30183FF03FE03FC02000200020002000200027C03860203000380018001C00
131 1C401CE01CE01C80184038403030E00F800E187E9713>I<01E006100C18183830383000700060
132 00E000E7C0E860F030F018E018E01CE01CE01C601C601C701830183030186007C00E187E9713>
133 I<40007FFE7FFC7FFC400880108010802000400040008001800180010003000300030003000700
134 0700070007000700070002000F197E9813>I<078018603030201860186018601870103C303E60
135 0F8007C019F030F86038401CC00CC00CC00CC00C6008201018600FC00E187E9713>I<07801860
136 303070306018E018E018E01CE01CE01C601C603C303C185C0F9C001C0018001800387030706060
137 4021801F000E187E9713>I<000C0000000C0000000C0000001E0000001E0000003F0000002700
138 00002700000043800000438000004380000081C0000081C0000081C0000100E0000100E00001FF
139 E000020070000200700006007800040038000400380008001C0008001C001C001E00FF00FFC01A
140 1A7F991D>65 D<003F0201C0C603002E0E001E1C000E1C0006380006780002700002700002F000
141 00F00000F00000F00000F00000F000007000027000027800023800041C00041C00080E00080300
142 3001C0C0003F00171A7E991C>67 D<3F8070C070E020700070007007F01C7030707070E070E071
143 E071E0F171FB1E3C10107E8F13>97 D<FC00001C00001C00001C00001C00001C00001C00001C00
144 001C00001C00001CF8001F0E001E07001C03801C01801C01C01C01C01C01C01C01C01C01C01C01
145 C01C03801C03001E07001B0C0010F000121A7F9915>I<07F80C1C381C30087000E000E000E000
146 E000E000E0007000300438080C1807E00E107F8F11>I<007E00000E00000E00000E00000E0000
147 0E00000E00000E00000E00000E0003CE000C3E00380E00300E00700E00E00E00E00E00E00E00E0
148 0E00E00E00E00E00600E00700E00381E001C2E0007CFC0121A7F9915>I<07C01C303018701860
149 0CE00CFFFCE000E000E000E0006000300438080C1807E00E107F8F11>I<01F0031807380E100E
150 000E000E000E000E000E00FFC00E000E000E000E000E000E000E000E000E000E000E000E000E00
151 0E007FE00D1A80990C>I<0FCE187330307038703870387038303018602FC02000600070003FF0
152 3FFC1FFE600FC003C003C003C0036006381C07E010187F8F13>I<FC00001C00001C00001C0000
153 1C00001C00001C00001C00001C00001C00001CF8001D0C001E0E001E0E001C0E001C0E001C0E00
154 1C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FF9FC0121A7F9915>I<18003C003C
155 001800000000000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C00
156 1C001C001C00FF80091A80990A>I<FC00001C00001C00001C00001C00001C00001C00001C0000
157 1C00001C00001C3F801C1E001C18001C10001C20001C40001DC0001FE0001CE0001C70001C7800
158 1C38001C1C001C1E001C1F00FF3FC0121A7F9914>107 D<FC001C001C001C001C001C001C001C
159 001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A
160 80990A>I<FC7C1F001D8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C07
161 01C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>I<FCF8
162 001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
163 001C0E00FF9FC012107F8F15>I<07E01C38300C700E6006E007E007E007E007E007E007600670
164 0E381C1C3807E010107F8F13>I<FCF8001F0E001E07001C03801C03801C01C01C01C01C01C01C
165 01C01C01C01C01C01C03801C03001E07001F0C001CF0001C00001C00001C00001C00001C00001C
166 0000FF800012177F8F15>I<FCE01D701E701E201C001C001C001C001C001C001C001C001C001C
167 001C00FFC00C107F8F0F>114 D<1F2060E04020C020C020F0007F003FC01FE000F080708030C0
168 30C020F0408F800C107F8F0F>I<0400040004000C000C001C003C00FFC01C001C001C001C001C
169 001C001C001C001C201C201C201C201C200E4003800B177F960F>I<FC7E001C0E001C0E001C0E
170 001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C1E000C2E0007CFC01210
171 7F8F15>I<FF1F803C06001C04001C04001E0C000E08000E080007100007100007900003A00003
172 A00001C00001C00001C00000800011107F8F14>I<FF3F9F803C0E0700380E06001C1604001C17
173 04001E170C000E2308000E2388000F239800074190000741D00003C1E0000380E0000380E00001
174 80C0000100400019107F8F1C>I<FF3F803C1C001C18000E100007200007600003C00001C00001
175 E00003E000027000043800083800181C00381E00FC3FC012107F8F14>I<FF1F803C06001C0400
176 1C04001E0C000E08000E080007100007100007900003A00003A00001C00001C00001C000008000
177 008000010000010000E10000E20000E4000078000011177F8F14>I E /Fg
178 25 121 df<3C7EFFFFFFFF7E3C08087C8711>46 D<007F800003FFF00007E1F8000F807C001F00
179 3E003F003F003E001F007E001F807E001F807E001F807E001F80FE001FC0FE001FC0FE001FC0FE
180 001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0
181 7E001F807E001F807E001F807E001F803F003F003F003F001F003E000F807C0007E1F80003FFF0
182 00007F80001A237EA21F>48 D<001C00003C0000FC00FFFC00FFFC0000FC0000FC0000FC0000FC
183 0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
184 0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC007FFFFC7FFF
185 FC16237CA21F>I<01FF0007FFC01E07F03803F86001FC7C00FEFE00FEFE00FFFE007FFE007F7C
186 007F3800FF0000FF0000FE0000FE0001FC0001F80003F00007E0000780000F00001E00003C0000
187 700000E00301C0030380070700060600060FFFFE1FFFFE3FFFFE7FFFFCFFFFFCFFFFFC18237DA2
188 1F>I<01FF0007FFE01E03F03801F83C01FC7E00FE7E00FE7E00FE3E00FE1C01FE0001FC0001FC
189 0003F80007F0000FC001FF0001FF000007E00001F00001F80000FC0000FE0000FF0000FF1000FF
190 7C00FFFE00FFFE00FFFE00FEFE00FE7C01FC7001F83E07F00FFFC001FF0018237DA21F>I<00FF
191 8003FFE00F01F81C007C38003C38001E78001E78001E7C001E7E001E7F803C7FE03C3FF8781FFC
192 F01FFFC00FFFC003FFE003FFF80FFFFC1E1FFC3C07FE7801FE7800FFF0003FF0001FF0000FF000
193 0FF0000FF0000E78000E78001C3E00381F80F007FFE000FF0018237DA21F>56
194 D<0000FF8008000FFFF018003FC03C7800FE0006F801F80003F803F00001F807E00000F80FC000
195 00781FC00000783F800000383F800000387F800000187F000000187F00000018FF00000000FF00
196 000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F
197 000000007F000000187F800000183F800000183F800000181FC00000300FC000003007E0000060
198 03F00000C001F800018000FE000700003FC01E00000FFFF8000000FFC00025257DA42C>67
199 D<07FF00001FFFC0003E03E0003F01F0003F01F8003F00FC001E00FC000000FC000000FC000000
200 FC00003FFC0003FCFC000FC0FC003F00FC007E00FC007E00FC00FC00FC00FC00FC00FC00FC00FC
201 017C007E017C003F067C001FFC3FE007F01FE01B187E971E>97 D<007FE003FFF807C07C1F80FC
202 1F00FC3F00FC7E00787E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00007E0000
203 7F00003F000C1F800C1FC01807E07003FFE0007F0016187E971B>99 D<0001FF800001FF800000
204 1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
205 001F8000001F80007F1F8003FFDF8007E0FF801F803F803F001F803F001F807E001F807E001F80
206 FE001F80FE001F80FE001F80FE001F80FE001F80FE001F80FE001F80FE001F807E001F807E001F
207 803F001F803F003F801F807F800FC0FF8003FF9FF800FE1FF81D267EA522>I<007F0003FFC007
208 C1F00F80F81F00F83F007C7E007C7E007EFE007EFE007EFFFFFEFFFFFEFE0000FE0000FE00007E
209 00007E00007E00063F00061F000C0F801807E07003FFE0007F8017187E971C>I<FFC00000FFC0
210 00000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000F
211 C000000FC000000FC000000FC1F8000FC7FE000FCC3F000FD01F000FF01F800FE01F800FE01F80
212 0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
213 800FC01F800FC01F800FC01F800FC01F800FC01F80FFFCFFF8FFFCFFF81D267DA522>104
214 D<0F001F803FC03FC03FC03FC01F800F000000000000000000000000000000FFC0FFC00FC00FC0
215 0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFF8FF
216 F80D277EA611>I<FFC00000FFC000000FC000000FC000000FC000000FC000000FC000000FC000
217 000FC000000FC000000FC000000FC000000FC000000FC000000FC07FC00FC07FC00FC01E000FC0
218 18000FC030000FC060000FC0C0000FC380000FC700000FCF00000FDF80000FFFC0000FE7C0000F
219 C7E0000F83F0000F81F0000F80F8000F80FC000F807E000F803E000F803F000F801F80FFF8FFF0
220 FFF8FFF01C267EA520>107 D<FFC0FFC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
221 0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
222 C00FC00FC00FC0FFFCFFFC0E267EA511>I<FF81FC01FC00FF87FF07FF000F8C1F8C1F800F980F
223 980F800FB00FF00FC00FA00FE00FC00FA00FE00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
224 0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
225 C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFFCFFFCFFFC
226 FFFCFFFCFFFC2E187D9733>I<FF81F800FF87FE000F8C3F000F901F000FB01F800FA01F800FA0
227 1F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800F
228 C01F800FC01F800FC01F800FC01F800FC01F800FC01F80FFFCFFF8FFFCFFF81D187D9722>I<00
229 7F800003FFF00007C0F8001F807E003F003F003F003F007E001F807E001F80FE001FC0FE001FC0
230 FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC07E001F807E001F803F003F003F003F
231 001F807E000FC0FC0003FFF000007F80001A187E971F>I<FFC3F800FFCFFE000FF83F800FE00F
232 C00FC00FE00FC007E00FC007F00FC003F00FC003F80FC003F80FC003F80FC003F80FC003F80FC0
233 03F80FC003F80FC003F80FC007F00FC007F00FC007E00FC00FC00FE01FC00FF83F000FDFFE000F
234 C7F0000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
235 FFFC0000FFFC00001D237E9722>I<FF87C0FF8FF00F98F80FB1F80FA1F80FA1F80FE0F00FC000
236 0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
237 0FC000FFFE00FFFE0015187E9719>114 D<07F9801FFF803C0F80700380F00180F00180F00180
238 FC0000FF80007FFC007FFE003FFF800FFFC003FFC0001FE00003E0C001E0C001E0E001E0E001C0
239 F003C0FC0780EFFF00C3FC0013187E9718>I<00600000600000600000600000E00000E00001E0
240 0001E00003E00007E0001FE000FFFFC0FFFFC007E00007E00007E00007E00007E00007E00007E0
241 0007E00007E00007E00007E00007E00007E06007E06007E06007E06007E06007E06003E0C003F0
242 C001FF80007E0013237FA218>I<FFC1FF80FFC1FF800FC01F800FC01F800FC01F800FC01F800F
243 C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F80
244 0FC01F800FC01F800FC03F800FC03F8007C07F8007E0DF8003FF9FF800FE1FF81D187D9722>I<
245 FFF9FFE0FF80FFF9FFE0FF801FC03F001C000FC01F0018000FC01F80180007E01F80300007E01F
246 80300007F01FC0700003F037C0600003F037C0600001F877E0C00001F863E0C00001FC63F1C000
247 00FCC1F1800000FCC1F18000007FC1FB0000007F80FB0000007F80FF0000003F007E0000003F00
248 7E0000001F007C0000001E003C0000001E003C0000000C0018000029187F972C>119
249 D<FFF83FF0FFF83FF00FC00F0007E00C0003F01C0003F8380001FC700000FCE000007EC000003F
250 8000003F8000001F8000000FC000001FE000001FF0000033F8000071F80000E0FC0001C07E0003
251 807F0003003F000F001F80FFC07FF8FFC07FF81D187F9720>I E /Fh 6
252 121 df<003F8000E0E001C0700780700F00780E00381E003C3C003C3C003C7C003C7C007CFFFF
253 F8F80000F80000F80000F80000F80000F80000F800007800107800103800201C00400C00800707
254 0001F800161A7C991A>101 D<0038007C00FC00FC007C00780000000000000000000000000000
255 0000000000F00FF00FF001F001F001E001E001E001E001E001E003C003C003C003C003C003C007
256 80078007800780078007800F80FFF0FFF00E297EA811>105 D<00F07F000FF183801FF201C001
257 F401E001F801E001F001E001F001E001E001E001E001E001E001E001E001E003C003C003C003C0
258 03C003C003C003C003C003C003C003C00780078007800780078007800780078007800780078007
259 800F800F80FFF8FFF8FFF8FFF81D1A7E9921>110 D<00200000200000200000600000400000C0
260 0000C00001C00001C00003C0000780001FFF80FFFF800780000780000780000F00000F00000F00
261 000F00000F00000F00001E00001E00001E00001E00001E01001E01003C02003C02003C02003C02
262 003C04001C04001C08000E100003E00011257BA417>116 D<078007807F807F80FF80FF800F80
263 0F800F800F800F000F000F000F000F000F000F000F000F000F000F000F001E001E001E001E001E
264 001E001E001E001E001E001E001E003C003C003C003C003C003C003C007C003C007C003C00BC00
265 1C017C000E067FC003F87FC01A1A7B9921>I<0FFF03FF0FFF07FF00FC01F0007801C0003C0100
266 003C0200001E0400001E0800000F1000000FB0000007E0000007C0000003C0000003E0000003E0
267 000004F0000008F000001078000020780000403C0000803E0001801E0003001F001F801F80FFC0
268 7FF8FFC07FF8201A7F991F>120 D E /Fi 37 121 df<1C3E7E7E3A0202040408081020C0070E
269 7D840D>44 D<FFC0FFC00A027D8A0F>I<0E1F1F1E0C000000000000000000003078F878700814
270 7C930D>58 D<0000100000001800000038000000380000007800000078000000FC000001BC0000
271 013C0000033C0000023C0000063C0000043E0000081E0000081E0000101E0000101E0000201E00
272 00200F0000400F0000400F0000FFFF0000800F0001000F80010007800200078002000780040007
273 80040007800C0007C03E0007C0FF807FFC1E207E9F22>65 D<07FFFF00007C01E0003C00F0003C
274 00780078003C0078003C0078001E0078001E0078001E0078001F00F0001F00F0001F00F0001F00
275 F0001F00F0001F00F0001F01E0001E01E0003E01E0003E01E0003E01E0003C01E0007C03C00078
276 03C000F003C000F003C001E003C003C003C0078007800F0007803C00FFFFE000201F7E9E23>68
277 D<07FFFFF8007C0078003C0038003C001800780018007800080078000800780008007800080078
278 080800F0100000F0100000F0100000F0300000FFF00000F0700001E0200001E0200001E0200001
279 E0200001E0000801E0001003C0001003C0001003C0002003C0002003C0006003C000C0078001C0
280 078007C0FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C0038003C00180078001800780008
281 0078000800780008007800080078000800F0100000F0100000F0100000F0300000F0700000FFF0
282 0001E0600001E0200001E0200001E0200001E0200001E0000003C0000003C0000003C0000003C0
283 000003C0000003C000000780000007C00000FFFE00001D1F7E9E1E>I<0001FC04000F030C003C
284 009C0070007C00E0003C01C0003803800018078000180F0000181F0000181E0000183E0000103C
285 0000007C0000007C0000007C0000007C000000F8000000F8000000F8007FFCF80003E0780001E0
286 780001E0780003C0780003C03C0003C03C0003C01C0003C00E0007C007000B800380118001E060
287 80003F80001E217B9F24>I<07FFE0007C00003C00003C00007800007800007800007800007800
288 00780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001E000
289 03C00003C00003C00003C00003C00003C00007800007C000FFFC00131F7F9E10>73
290 D<07FC0000FFC0007C0000F800003C00017800003C00017800004E0002F000004E0002F000004E
291 0004F000004E0004F000004E0008F000004E0008F00000870011E00000870011E00000870021E0
292 0000870021E00000870041E00000838041E00001038083C00001038083C00001038103C0000103
293 8203C0000101C203C0000101C403C0000201C40780000201C80780000201C80780000201D00780
294 000200F00780000600E00780000600E00F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>77
295 D<07FC01FFC0003E003E00003E001800003E001800004F001000004F0010000047801000004780
296 10000043C010000043C010000083C020000081E020000081E020000080F020000080F020000080
297 782000010078400001007C400001003C400001003C400001001E400001001E400002000F800002
298 000F800002000F800002000780000200078000060003800006000300000F00010000FFE0010000
299 221F7E9E22>I<0003F800001E0E000038070000E0038001C001C003C001E0078000E00F0000F0
300 0F0000F01E0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001
301 F0F80001F0F80001F0F80001F0F80003E0780003E0780003C0780007C07C0007803C000F003C00
302 1E001E001C000E0038000700F00003C3C00000FE00001D217B9F23>I<07FFFF00007C03C0003C
303 01E0003C00F0007800F0007800F8007800F8007800F8007800F8007800F000F001F000F001E000
304 F003C000F0078000F00F0000FFF80001E0000001E0000001E0000001E0000001E0000001E00000
305 03C0000003C0000003C0000003C0000003C0000003C000000780000007C00000FFFC00001D1F7E
306 9E1F>I<07FFFC00007C0700003C03C0003C01E0007801E0007801F0007801F0007801F0007801
307 F0007801E000F003E000F003C000F0078000F00F0000F03C0000FFF00001E0300001E0380001E0
308 1C0001E01C0001E01C0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E0207
309 803E0407C01F04FFFC0F18000003E01F207E9E21>82 D<003F040060CC01803C03801C03001C07
310 00180600080E00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FFC0007FE000
311 07E00001E00000E00000F00000F04000E04000E04000E04000E06000C0600180E00380F80300C6
312 0C0081F80016217D9F19>I<3FFFFFF03C0780F03007803060078030400F0010400F0010C00F00
313 10800F0010800F0010800F0010001E0000001E0000001E0000001E0000001E0000001E0000003C
314 0000003C0000003C0000003C0000003C0000003C00000078000000780000007800000078000000
315 7800000078000000F0000001F800007FFFE0001C1F7A9E21>I<FFFC3FF80F8007C00780030007
316 8003000F0002000F0002000F0002000F0002000F0002000F0002001E0004001E0004001E000400
317 1E0004001E0004001E0004003C0008003C0008003C0008003C0008003C0008003C000800380010
318 003800100038001000380020003C0040001C0040001C0080000E0100000706000001F800001D20
319 799E22>I<03FFC0FFC0007F007E00003E003800001E003000001E002000000F004000000F0080
320 00000F81000000078200000007C600000003C400000003E800000001F000000001F000000000F0
321 00000000F800000000F8000000017C000000023C000000043C0000000C1E000000081E00000010
322 1F000000200F000000400F800000C0078000008007C000010003C000070003E0001F8007E000FF
323 E01FFE00221F7F9E22>88 D<FFF003FF1F8000F80F0000600F8000400780008007C0018003C001
324 0003E0020001E0040001F00C0001F0080000F0100000F8200000786000007C4000003C8000003F
325 0000001F0000001E0000001E0000001E0000001C0000003C0000003C0000003C0000003C000000
326 3C00000038000000780000007C00000FFFC000201F7A9E22>I<07F8000C0C001E06001E07001C
327 070000070000070000070000FF0007C7001E07003C0E00780E00F00E10F00E10F00E10F01E10F0
328 2E20784F401F878014147D9317>97 D<0700003F00000F00000700000700000E00000E00000E00
329 000E00000E00000E00001C00001C7C001D87001E03801C01C01C01C03801C03801E03801E03801
330 E03801E03801E07003C07003C0700380700780700700700E00E81C00C4380083E00013207B9F19
331 >I<01FC07060E0F1C0F380E78007000F000F000F000F000E000E000E000E000F0027004300818
332 300FC010147C9314>I<0000700003F00000F00000700000700000E00000E00000E00000E00000
333 E00000E00001C000F9C00305C00E03C01C03C03801C0780380700380F00380F00380F00380F003
334 80E00700E00700E00700E00700E00700700F00301E00186F000F8FE014207C9F19>I<00F80007
335 0E000E07001C0700380380780380700380F00380F00380FFFF80F00000E00000E00000E00000E0
336 0000F001007002003004001C180007E00011147D9314>I<0007800018C00031E00061E000E1C0
337 00C00001C00001C00001C00001C00001C0000380007FF800038000038000038000038000070000
338 0700000700000700000700000700000E00000E00000E00000E00000E00000E00001C00001E0000
339 FFE00013207E9F0E>I<00E00007E00001E00000E00000E00001C00001C00001C00001C00001C0
340 0001C000038000038F800390E003A0E003C0600380600780E00700E00700E00700E00700E00700
341 E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FFCFF815207E9F19>104
342 D<01C003E003E003C0018000000000000000000000000003801F80078003800380070007000700
343 0700070007000E000E000E000E000E000E001C001E00FF800B1F7F9E0C>I<00E007E001E000E0
344 00E001C001C001C001C001C001C00380038003800380038003800700070007000700070007000E
345 000E000E000E000E000E001C001E00FFC00B207F9F0C>108 D<0387C07C001F9861860007A072
346 070003C03403000380380300078078070007007007000700700700070070070007007007000700
347 7007000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001E
348 01E01E00FFCFFCFFC022147E9326>I<038F801F90E007A0E003C0600380600780E00700E00700
349 E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FFCFF81514
350 7E9319>I<00FC000387000E01801C00C03800E03800E07000F0F000F0F000F0F000F0F000F0E0
351 01E0E001E0E001C0E003C0F00380700700380E001C1C0007E00014147D9317>I<00E3E007EC38
352 00F01C00E01E00E00E01C00E01C00F01C00F01C00F01C00F01C00F03801E03801E03801C03803C
353 0380380380700740E00721C0071F000700000700000700000E00000E00000E00000E00001E0000
354 FFC000181D809319>I<038E001FB38007C78003C7800383000780000700000700000700000700
355 000700000E00000E00000E00000E00000E00000E00001C00001E0000FFE00011147E9312>114
356 D<01F2060E080618061802380438001E001FE00FF003F8003C401C400C400C600C6018E010D060
357 8FC00F147E9312>I<0080010001000100030007000F001E00FFF80E000E000E000E001C001C00
358 1C001C001C001C00380038203820382038203840384018800F000D1C7C9B12>I<1C0380FC1F80
359 3C07801C03801C0380380700380700380700380700380700380700700E00700E00700E00700E00
360 701E00701E00703C00305E001F9FC012147B9319>I<1FF0FF03C07801C06001C04000E08000E1
361 80007300007600003C00003C00001C00002E00004E000087000107000203800603800C01C03E03
362 E0FF07FC18147F9318>120 D E /Fj 8 118 df<000380000007C0000007C0000007C0000007C0
363 000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0007FFF
364 FFF8FFFFFFFCFFFFFFFCFFFFFFFC7FFFFFF80007C0000007C0000007C0000007C0000007C00000
365 07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000000380001E217DA5
366 25>43 D<7FC0000000FFE0000000FFE00000007FE000000003E000000003E000000003E0000000
367 03E000000003E000000003E000000003E000000003E000000003E000000003E1FE000003E7FF80
368 0003EFFFC00003FFFFF00003FF07F80003FC01F80003F8007C0003F0003E0003F0003F0003E000
369 1F0003E0001F0003E0001F8003E0000F8003E0000F8003E0000F8003E0000F8003E0000F8003E0
370 000F8003E0000F8003E0001F8003E0001F0003F0001F0003F0003E0003F8007E0003F800FC0003
371 FC01F80003FF07F00003FFFFE00003EFFFC00003E7FF800001C1FC0000212C7FAB25>98
372 D<001FFC00007FFF0001FFFF8003FFFFC007F00FC00FC00FC01F8007803F0003003E0000007C00
373 00007C000000FC000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000FC
374 0000007C0000007C0000003E0001C03F0003E01F8003E00FC007E007F03FC003FFFF8001FFFF00
375 007FFE00001FF0001B1F7B9E25>I<00003FC00000FFE00003FFF00007FFF8000FE1F8000F81F8
376 001F80F0001F0000001F0000001F0000001F0000001F0000001F00007FFFFFC0FFFFFFE0FFFFFF
377 E07FFFFFC0001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F
378 0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000
379 1F0000001F0000001F0000001F0000001F00003FFFFF807FFFFFC07FFFFFC03FFFFF801D2C7EAB
380 25>102 D<7F80000000FFC0000000FFC00000007FC000000003C000000003C000000003C00000
381 0003C000000003C000000003C000000003C000000003C000000003C000000003C0FFFE0003C1FF
382 FF0003C1FFFF0003C0FFFE0003C007C00003C00F800003C01F000003C03E000003C07C000003C0
383 F8000003C1F0000003C3E0000003C7C0000003CFC0000003DFE0000003FFF0000003FCF8000003
384 F878000003F07C000003E03E000003C01E000003C01F000003C00F800003C007800003C007C000
385 03C003E00003C001F0007FFE0FFF00FFFF1FFF80FFFF1FFF807FFE0FFF00212C7EAB25>107
386 D<003FC00000FFF00003FFFC0007FFFE000FE07F001F801F801F000F803E0007C03E0007C07C00
387 03E07C0003E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0FC
388 0003F07C0003E07C0003E03E0007C03F000FC01F801F801FC03F800FE07F0007FFFE0003FFFC00
389 00FFF000003FC0001C1F7C9E25>111 D<01FFC60007FFFF001FFFFF003FFFFF007F00FF007C00
390 3F00F0001F00F0001F00F0001F00F0000E00FC0000007F8000003FFC00001FFFE0000FFFF80003
391 FFFC00001FFE000000FF0000001F80700007C0F80003C0F80003C0FC0003C0FC0003C0FE0007C0
392 FF000F80FFC07F00FFFFFE00FFFFFC00F3FFF800607FC0001A1F7B9E25>115
393 D<7FC03FE000FFE07FF000FFE07FF0007FE03FF00003E001F00003E001F00003E001F00003E001
394 F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E0
395 01F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003
396 E003F00003E003F00003F007F00001F81FF00001FFFFFF8000FFFFFFC0007FFDFFC0001FF0FF80
397 221F7F9E25>117 D E /Fk 46 122 df<000FF80000007FFF000001FC1FC00003F007E00007E0
398 03F0000FE003F8001FC001FC001FC001FC003FC001FE003F8000FE003F8000FE007F8000FF007F
399 8000FF007F8000FF007F8000FF00FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80
400 FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF80FF8000FF
401 80FF8000FF80FF8000FF80FF8000FF807F8000FF007F8000FF007F8000FF007F8000FF007F8000
402 FF003F8000FE003FC001FE001FC001FC001FC001FC000FE003F80007E003F00003F007E00001FC
403 1FC000007FFF0000000FF80000212E7DAD28>48 D<0001C0000003C000000FC000007FC0001FFF
404 C000FFFFC000FFBFC000E03FC000003FC000003FC000003FC000003FC000003FC000003FC00000
405 3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
406 003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
407 00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0007FFF
408 FFE07FFFFFE07FFFFFE01B2E7AAD28>I<003FE00001FFFE0007FFFF800F80FFC01E003FE03800
409 1FF07C000FF87E0007FCFF0007FCFF8007FEFF8007FEFF8003FEFF8003FE7F0003FE3E0007FE00
410 0007FE000007FC000007FC00000FF800000FF800000FF000001FE000001FC000003F8000007F00
411 00007E000000F8000001F0000003E0000007C000000F0000001E000E003C000E0038000E007000
412 1E00E0001C01C0001C0300003C07FFFFFC0FFFFFFC1FFFFFFC3FFFFFFC7FFFFFF8FFFFFFF8FFFF
413 FFF8FFFFFFF81F2E7CAD28>I<001FF80000007FFF000001FFFFC00003E03FE00007800FF0000F
414 C00FF8001FE007F8001FE007FC001FE007FC001FE007FC001FE007FC000FC007FC00078007FC00
415 00000FF80000000FF80000000FF00000001FE00000001FC00000003F80000000FE0000003FF800
416 00003FFF800000001FE000000007F000000007F800000003FC00000003FE00000001FF00000001
417 FF00000001FF80000001FF80000001FF801C0001FF803E0001FF807F0001FF80FF8001FF80FF80
418 01FF00FF8001FF00FF8003FE007F0003FE007E0007FC003C0007F8001FC01FF0000FFFFFC00003
419 FFFF0000003FF80000212E7DAD28>I<0000007000000000F000000001F000000003F000000007
420 F00000000FF00000000FF00000001FF00000003FF000000077F0000000F7F0000000E7F0000001
421 C7F000000387F000000707F000000F07F000000E07F000001C07F000003807F000007007F00000
422 F007F00000E007F00001C007F000038007F000070007F0000F0007F0000E0007F0001C0007F000
423 380007F000700007F000E00007F000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE000000FF00000000FF0
424 0000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000FFF
425 FFE0000FFFFFE0000FFFFFE0232E7EAD28>I<0C0000300FC003F00FFFFFE00FFFFFC00FFFFF80
426 0FFFFF000FFFFE000FFFF8000FFFF0000FFF80000E0000000E0000000E0000000E0000000E0000
427 000E0000000E0000000E0000000E1FF0000E7FFE000FE03F800F800FC00E0007E00C0007F00000
428 07F8000003FC000003FC000003FC000003FE000003FE180003FE3E0003FE7F0003FEFF0003FEFF
429 0003FEFF0003FCFF0003FCFE0003FC780007F8780007F03C000FE01E001FC00FC07F8007FFFF00
430 01FFFC00003FE0001F2E7CAD28>I<0000FF80000007FFE000001FFFF000007F80F80000FE003C
431 0001F8007C0003F000FE0007F001FE000FE001FE000FE001FE001FC001FE003FC000FC003FC000
432 78003FC00000007F800000007F800000007F80000000FF83FC0000FF8FFF8000FF9C0FC000FFB0
433 03F000FFB001F800FFE001FC00FFC001FE00FFC000FE00FFC000FF00FFC000FF00FF8000FF80FF
434 8000FF80FF8000FF80FF8000FF807F8000FF807F8000FF807F8000FF807F8000FF803F8000FF00
435 3FC000FF001FC000FF001FC000FE000FC001FC0007E001FC0003F003F80001FC0FE00000FFFFC0
436 00003FFF0000000FFC0000212E7DAD28>I<38000000003E000000003FFFFFFFC03FFFFFFFC03F
437 FFFFFFC03FFFFFFF807FFFFFFF007FFFFFFE007FFFFFFC007FFFFFF80078000038007000007000
438 700000E000F00001C000E000038000E000070000E00007000000000E000000001C000000003800
439 00000038000000007800000000F000000000F000000001F000000001E000000003E000000003E0
440 00000007E000000007E00000000FC00000000FC00000000FC00000001FC00000001FC00000001F
441 C00000001FC00000001FC00000003FC00000003FC00000003FC00000003FC00000003FC0000000
442 3FC00000003FC00000003FC00000001F800000000F00000022307CAF28>I<000FF80000003FFF
443 000000FFFFC00001F80FE00003E003F00007C001F8000F8001F8000F8000FC000F8000FC001F80
444 00FC001F8000FC001FC000FC001FC000FC001FF000F8001FFC01F8000FFE01F0000FFF83E00007
445 FFE7C00007FFFF800003FFFE000001FFFF000000FFFFC000003FFFE00001FFFFF00003E3FFF800
446 07C1FFFC001F807FFE003F001FFF003E0007FF007E0003FF807E0000FF80FC00007F80FC00003F
447 80FC00001F80FC00001F80FC00001F80FC00001F007E00001F007E00001F007F00003E003F0000
448 7C001FC000F8000FF007F00003FFFFE00000FFFF8000001FF80000212E7DAD28>I<000FF80000
449 007FFF000001FFFF800003F80FC00007E007E0000FC003F0001FC001F8003FC001FC007F8001FC
450 007F8001FE007F8000FE00FF8000FF00FF8000FF00FF8000FF00FF8000FF00FF8000FF80FF8000
451 FF80FF8000FF80FF8000FF807F8001FF807F8001FF803F8001FF803FC001FF801FC003FF800FC0
452 06FF8007E006FF8001F81CFF8000FFF8FF80001FE0FF80000000FF00000000FF00000000FF0000
453 0000FF000F0001FE001F8001FE003FC001FC003FC001FC003FC003F8003FC003F0003F8007E000
454 1F000FC0001E001F80000F80FF000007FFFE000001FFF80000007FC00000212E7DAD28>I<0000
455 007800000000000078000000000000FC000000000000FC000000000000FC000000000001FE0000
456 00000001FE000000000003FF000000000003FF000000000007FF800000000007FF800000000007
457 FF80000000000FFFC0000000000E7FC0000000001E7FE0000000001C3FE0000000001C3FE00000
458 0000383FF000000000381FF000000000781FF800000000700FF800000000700FF800000000E00F
459 FC00000000E007FC00000001E007FE00000001C003FE00000001C003FE000000038003FF000000
460 038001FF000000078001FF800000070000FF800000070000FF8000000FFFFFFFC000000FFFFFFF
461 C000001FFFFFFFE000001C00003FE000003C00003FF000003800001FF000003800001FF0000070
462 00001FF800007000000FF80000F000000FFC0000E0000007FC0000E0000007FC0001C0000007FE
463 0003E0000003FE00FFFF8001FFFFFCFFFF8001FFFFFCFFFF8001FFFFFC36317DB03D>65
464 D<000003FF80018000003FFFF003800001FFFFFC07800007FF003F0F80001FF800079F80003FC0
465 0001FF8000FF800000FF8001FE0000007F8003FC0000003F8007FC0000001F8007F80000000F80
466 0FF00000000F801FF000000007801FF000000007803FE000000007803FE000000003807FE00000
467 0003807FE000000003807FC000000000007FC00000000000FFC00000000000FFC00000000000FF
468 C00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000
469 0000FFC000000000007FC000000000007FC000000000007FE000000000007FE000000003803FE0
470 00000003803FE000000003801FF000000003801FF000000007800FF0000000070007F800000007
471 0007FC0000000E0003FC0000001E0001FE0000001C0000FF8000007800003FC00000F000001FF8
472 0003E0000007FF003F80000001FFFFFE000000003FFFF80000000003FF80000031317CB03A>67
473 D<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FF80003FF000FF800007F800FF800003F800FF
474 800000F800FF800000F800FF8000007800FF8000007800FF8000003800FF8000003800FF800000
475 3800FF8000001C00FF8007001C00FF8007001C00FF8007001C00FF8007000000FF8007000000FF
476 800F000000FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F00
477 0000FF801F000000FF800F000000FF8007000000FF8007000000FF8007000700FF8007000700FF
478 8007000700FF8000000E00FF8000000E00FF8000000E00FF8000000E00FF8000001E00FF800000
479 1E00FF8000003C00FF8000003C00FF8000007C00FF800000FC00FF800001FC00FF800007FC00FF
480 80003FFCFFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF830317EB035>69 D<FFFFFFFFFFE0FFFFFF
481 FFFFE0FFFFFFFFFFE000FF80007FE000FF80000FF000FF800003F000FF800001F000FF800001F0
482 00FF800000F000FF800000F000FF8000007000FF8000007000FF8000007000FF8000003800FF80
483 00003800FF8007003800FF8007003800FF8007000000FF8007000000FF8007000000FF800F0000
484 00FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F000000FF80
485 1F000000FF800F000000FF8007000000FF8007000000FF8007000000FF8007000000FF80070000
486 00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
487 00000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000FFFFFFE00000
488 FFFFFFE00000FFFFFFE000002D317EB033>I<FFFFFF807FFFFFC0FFFFFF807FFFFFC0FFFFFF80
489 7FFFFFC000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF80
490 00007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF
491 8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000
492 FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000
493 00FFFFFFFFFFC00000FFFFFFFFFFC00000FFFFFFFFFFC00000FF8000007FC00000FF8000007FC0
494 0000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007F
495 C00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF800000
496 7FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000
497 007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000FFFFFF
498 807FFFFFC0FFFFFF807FFFFFC0FFFFFF807FFFFFC03A317EB03F>72 D<FFFFFF80FFFFFF80FFFF
499 FF8000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000
500 FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
501 00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF80
502 0000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
503 800000FF800000FF800000FF800000FF8000FFFFFF80FFFFFF80FFFFFF8019317EB01E>I<FFFF
504 FFE00000FFFFFFE00000FFFFFFE0000000FF8000000000FF8000000000FF8000000000FF800000
505 0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
506 8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
507 0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
508 8000000000FF8000000000FF8000000000FF8000000000FF800001C000FF800001C000FF800001
509 C000FF800001C000FF800003C000FF8000038000FF8000038000FF8000078000FF8000078000FF
510 8000078000FF80000F8000FF80001F8000FF80003F8000FF80007F8000FF8000FF0000FF8007FF
511 00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF002A317EB030>76 D<FFFFC000000003FFFFFFFFC0
512 00000003FFFFFFFFE000000007FFFF00FFE000000007FF0000EFF00000000EFF0000EFF0000000
513 0EFF0000EFF00000000EFF0000E7F80000001CFF0000E7F80000001CFF0000E3FC00000038FF00
514 00E3FC00000038FF0000E1FE00000070FF0000E1FE00000070FF0000E0FF000000E0FF0000E0FF
515 000000E0FF0000E07F800001C0FF0000E07F800001C0FF0000E03FC0000380FF0000E03FC00003
516 80FF0000E03FC0000380FF0000E01FE0000700FF0000E01FE0000700FF0000E00FF0000E00FF00
517 00E00FF0000E00FF0000E007F8001C00FF0000E007F8001C00FF0000E003FC003800FF0000E003
518 FC003800FF0000E001FE007000FF0000E001FE007000FF0000E000FF00E000FF0000E000FF00E0
519 00FF0000E000FF00E000FF0000E0007F81C000FF0000E0007F81C000FF0000E0003FC38000FF00
520 00E0003FC38000FF0000E0001FE70000FF0000E0001FE70000FF0000E0000FFE0000FF0000E000
521 0FFE0000FF0000E00007FC0000FF0000E00007FC0000FF0000E00007FC0000FF0000E00003F800
522 00FF0001F00003F80000FF00FFFFE001F000FFFFFFFFFFE001F000FFFFFFFFFFE000E000FFFFFF
523 48317EB04D>I<FFFF800001FFFFC0FFFFC00001FFFFC0FFFFE00001FFFFC000FFF0000003E000
524 00FFF8000001C00000EFFC000001C00000E7FC000001C00000E7FE000001C00000E3FF000001C0
525 0000E1FF800001C00000E0FFC00001C00000E07FE00001C00000E03FE00001C00000E03FF00001
526 C00000E01FF80001C00000E00FFC0001C00000E007FE0001C00000E003FE0001C00000E001FF00
527 01C00000E001FF8001C00000E000FFC001C00000E0007FE001C00000E0003FF001C00000E0001F
528 F001C00000E0001FF801C00000E0000FFC01C00000E00007FE01C00000E00003FF01C00000E000
529 01FF81C00000E00000FF81C00000E00000FFC1C00000E000007FE1C00000E000003FF1C00000E0
530 00001FF9C00000E000000FFDC00000E0000007FDC00000E0000007FFC00000E0000003FFC00000
531 E0000001FFC00000E0000000FFC00000E00000007FC00000E00000003FC00000E00000003FC000
532 00E00000001FC00000E00000000FC00001F000000007C000FFFFE0000003C000FFFFE0000001C0
533 00FFFFE0000001C0003A317EB03F>I<00000FFF0000000000FFFFF000000007FC03FE0000001F
534 E0007F8000003F80001FC000007F00000FE00001FE000007F80003FC000003FC0007F8000001FE
535 0007F8000001FE000FF0000000FF001FF0000000FF801FE00000007F803FE00000007FC03FE000
536 00007FC03FE00000007FC07FC00000003FE07FC00000003FE07FC00000003FE0FFC00000003FF0
537 FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000
538 003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF0FFC00000003FF07FC00000003FE07F
539 E00000007FE07FE00000007FE07FE00000007FE03FE00000007FC03FE00000007FC01FF0000000
540 FF801FF0000000FF800FF8000001FF0007F8000001FE0007FC000003FE0003FC000003FC0001FE
541 000007F80000FF00000FF000003FC0003FC000001FE0007F80000007FC03FE00000000FFFFF000
542 0000000FFF00000034317CB03D>I<FFFFFFFFE000FFFFFFFFFE00FFFFFFFFFF8000FF8000FFE0
543 00FF80003FF000FF80000FF800FF800007FC00FF800007FC00FF800003FE00FF800003FE00FF80
544 0003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003FF
545 00FF800003FE00FF800003FE00FF800007FC00FF800007F800FF80000FF800FF80003FE000FF80
546 00FFC000FFFFFFFF0000FFFFFFF80000FF8000000000FF8000000000FF8000000000FF80000000
547 00FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
548 00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000
549 00FF8000000000FF8000000000FF80000000FFFFFF800000FFFFFF800000FFFFFF80000030317E
550 B037>I<001FF8018000FFFF038003FFFFC78007F007EF800F8000FF801F00007F803E00001F80
551 3E00000F807C00000F807C00000780FC00000780FC00000780FC00000380FE00000380FE000003
552 80FF00000000FFC00000007FF00000007FFF8000003FFFF800003FFFFF80001FFFFFF0000FFFFF
553 F80007FFFFFE0003FFFFFF0000FFFFFF80003FFFFF800001FFFFC000001FFFE0000000FFE00000
554 003FE00000001FF00000000FF000000007F060000007F0E0000003F0E0000003F0E0000003F0E0
555 000003E0F0000003E0F0000003E0F8000007C0FC000007C0FF00000F80FFC0001F00FBFC00FE00
556 F1FFFFF800E03FFFF000C003FF800024317CB02D>83 D<7FFFFFFFFFFF007FFFFFFFFFFF007FFF
557 FFFFFFFF007FC00FF801FF007E000FF8003F007C000FF8001F0078000FF8000F0078000FF8000F
558 0070000FF8000700F0000FF8000780F0000FF8000780F0000FF8000780E0000FF8000380E0000F
559 F8000380E0000FF8000380E0000FF8000380E0000FF800038000000FF800000000000FF8000000
560 00000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8
561 00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000
562 000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800
563 000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000000000
564 0FF800000000000FF800000000000FF800000000000FF8000000007FFFFFFF0000007FFFFFFF00
565 00007FFFFFFF000031307DAF38>I<00FFF0000003FFFE00000F803F80000FC00FE0001FE007F0
566 001FE007F0001FE003F8000FC003FC00078003FC00000003FC00000003FC00000003FC00000003
567 FC000000FFFC00001FFFFC0000FFE3FC0003FC03FC000FF003FC001FC003FC003FC003FC007F80
568 03FC007F8003FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00FF0007FC007F800DFC003F
569 C019FE001FE070FFF007FFE07FF000FF803FF024207E9F27>97 D<01F8000000FFF8000000FFF8
570 000000FFF80000000FF800000007F800000007F800000007F800000007F800000007F800000007
571 F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8000000
572 07F83FE00007F8FFFC0007FBE07F0007FF001F8007FE000FC007FC000FE007F80007F007F80007
573 F807F80007F807F80003FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE07F800
574 03FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F80003FC07F80003FC07F8
575 0007F807F80007F807F80007F007FC000FE007FE000FC007E7003F8007C3C0FE000780FFF80007
576 003FC00027327EB12D>I<000FFF00007FFFC001FC01F003F003F007E007F80FE007F81FC007F8
577 3FC003F03FC001E07F8000007F8000007F800000FF800000FF800000FF800000FF800000FF8000
578 00FF800000FF800000FF8000007F8000007F8000007F8000003FC0001C3FC0001C1FC000380FE0
579 003807E0007003F001E001FC07C0007FFF00000FF8001E207D9F24>I<0000000FC0000007FFC0
580 000007FFC0000007FFC00000007FC00000003FC00000003FC00000003FC00000003FC00000003F
581 C00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000000
582 3FC00007F83FC0003FFF3FC000FE07BFC003F801FFC007E0007FC00FE0007FC01FC0003FC03FC0
583 003FC03FC0003FC07F80003FC07F80003FC07F80003FC0FF80003FC0FF80003FC0FF80003FC0FF
584 80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC07F80003FC07F80003FC07F80003FC0
585 3FC0003FC03FC0003FC01FC0003FC00FE0007FC007E000FFC003F003FFE001FC0F3FFE007FFE3F
586 FE000FF03FFE27327DB12D>I<000FFC00007FFF8001FC0FC003F003E007E001F00FE001F81FC0
587 00FC3FC000FE3FC000FE7F80007E7F80007F7F80007FFF80007FFF80007FFFFFFFFFFFFFFFFFFF
588 800000FF800000FF800000FF8000007F8000007F8000007F8000003FC000071FC000071FC0000E
589 0FE0000E07F0001C03F8007800FE03E0003FFFC00007FE0020207E9F25>I<0001FE00000FFF80
590 001FC3C0007F07E000FE0FF001FE0FF001FC0FF003FC0FF003FC07E003FC018003FC000003FC00
591 0003FC000003FC000003FC000003FC000003FC000003FC0000FFFFFC00FFFFFC00FFFFFC0003FC
592 000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003
593 FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
594 03FC000003FC000003FC000003FC000003FC000003FC00007FFFF0007FFFF0007FFFF0001C327E
595 B119>I<001FF007C000FFFE3FE001F83F79F007E00FC3F00FE00FE1F00FC007E0E01FC007F000
596 1FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8001FC007F0001FC007F0
597 000FC007E0000FE00FE00007E00FC00003F83F000006FFFE00000E1FF000000E000000001E0000
598 00001E000000001F000000001F800000001FFFFF80000FFFFFF0000FFFFFFC0007FFFFFE0003FF
599 FFFF0003FFFFFF800FFFFFFFC01F00007FC07E00001FE07C00000FE0FC000007E0FC000007E0FC
600 000007E0FC000007E07E00000FC03E00000F803F00001F800FC0007E0007F803FC0001FFFFF000
601 001FFF0000242F7E9F28>I<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F8
602 00000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007
603 F800000007F800000007F800000007F800000007F800000007F807F80007F83FFE0007F8783F00
604 07F8C03F8007F9801FC007FB001FC007FE001FE007FC001FE007FC001FE007FC001FE007F8001F
605 E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
606 1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
607 001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28327DB12D>I<03C00007
608 E0000FF0001FF8001FF8001FF8001FF8000FF00007E00003C00000000000000000000000000000
609 000000000000000000000000000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007
610 F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
611 F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>I<
612 01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F800000007F80000
613 0007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F800
614 000007F800000007F800000007F801FFF807F801FFF807F801FFF807F8003F0007F8003C0007F8
615 00780007F800F00007F803C00007F807800007F80F000007F81E000007F878000007F8FC000007
616 F9FE000007FBFE000007FFFF000007FE7F800007FC7FC00007F83FC00007F01FE00007F00FF000
617 07F00FF80007F007FC0007F003FC0007F001FE0007F000FF0007F000FF8007F0007F8007F0007F
618 C0FFFF81FFFEFFFF81FFFEFFFF81FFFE27327EB12B>107 D<01F800FFF800FFF800FFF8000FF8
619 0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
620 0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
621 0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
622 0007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>I<03F007F8001FE000FFF03FFE00
623 FFF800FFF0783F01E0FC00FFF0C03F8300FE000FF1801FC6007F0007F3001FCC007F0007F6001F
624 F8007F8007FC001FF0007F8007FC001FF0007F8007FC001FF0007F8007F8001FE0007F8007F800
625 1FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8
626 001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007
627 F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F80
628 07F8001FE0007F8007F8001FE0007F8007F8001FE0007F80FFFFC3FFFF0FFFFCFFFFC3FFFF0FFF
629 FCFFFFC3FFFF0FFFFC3E207D9F43>I<03F007F800FFF03FFE00FFF0783F00FFF0C03F800FF180
630 1FC007F3001FC007F6001FE007FC001FE007FC001FE007FC001FE007F8001FE007F8001FE007F8
631 001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
632 F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
633 07F8001FE0FFFFC3FFFFFFFFC3FFFFFFFFC3FFFF28207D9F2D>I<0007FC0000007FFFC00001FC
634 07F00003F001F80007E000FC000FC0007E001FC0007F003FC0007F803F80003F807F80003FC07F
635 80003FC07F80003FC0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0
636 FF80003FE0FF80003FE07F80003FC07F80003FC07F80003FC03FC0007F803FC0007F801FC0007F
637 000FE000FE0007E000FC0003F803F80001FE0FF000007FFFC0000007FC000023207E9F28>I<01
638 F83FE000FFF8FFFC00FFFBE07F00FFFF003F8007FE001FC007FC000FE007F8000FF007F80007F8
639 07F80007F807F80007FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE07F80003
640 FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F80007FC07F80007FC07F800
641 07F807F80007F807F8000FF007FC000FE007FE001FC007FF003F8007FBC0FE0007F8FFF80007F8
642 3FC00007F800000007F800000007F800000007F800000007F800000007F800000007F800000007
643 F800000007F800000007F800000007F8000000FFFFC00000FFFFC00000FFFFC00000272E7E9F2D
644 >I<03F03F00FFF07FC0FFF1C3E0FFF187E00FF30FF007F60FF007F60FF007FC07E007FC03C007
645 FC000007FC000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000
646 07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
647 00FFFFE000FFFFE000FFFFE0001C207E9F21>114 D<01FF860007FFFE001F00FE003C003E0078
648 001E0078000E00F8000E00F8000E00F8000E00FC000000FF800000FFFC00007FFFC0007FFFF000
649 3FFFF8001FFFFC0007FFFE0001FFFF00003FFF000000FF8000003F8060001F80E0000F80E0000F
650 80F0000F80F0000F00F8000F00FC001E00FE001C00FF807800F3FFF000C07F800019207D9F20>
651 I<001C0000001C0000001C0000001C0000001C0000003C0000003C0000003C0000007C0000007C
652 000000FC000001FC000003FC000007FC00001FFFFE00FFFFFE00FFFFFE0003FC000003FC000003
653 FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000
654 03FC000003FC000003FC000003FC000003FC038003FC038003FC038003FC038003FC038003FC03
655 8003FC038001FC038001FC070000FE0700007F0E00003FFC000007F000192E7FAD1F>I<01F800
656 07E0FFF803FFE0FFF803FFE0FFF803FFE00FF8003FE007F8001FE007F8001FE007F8001FE007F8
657 001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
658 F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
659 07F8003FE007F8003FE003F8007FE003F8007FE001FC00DFF000FE039FFF007FFF1FFF000FFC1F
660 FF28207D9F2D>I<FFFF801FFCFFFF801FFCFFFF801FFC0FF80003C007F800038007FC00078003
661 FC00070003FE000F0001FE000E0001FF000E0000FF001C0000FF001C00007F803800007F803800
662 007FC07800003FC07000003FE0F000001FE0E000001FF1E000000FF1C000000FF9C0000007FB80
663 000007FB80000003FF00000003FF00000003FF00000001FE00000001FE00000000FC00000000FC
664 00000000780000000078000026207E9F2B>I<FFFF1FFFE07FF8FFFF1FFFE07FF8FFFF1FFFE07F
665 F80FF000FE0007800FF800FE00078007F800FE00070007F8007F00070003FC007F000E0003FC00
666 FF800E0003FE00FF801E0001FE00FF801C0001FE01DFC01C0001FF01DFC03C0000FF03DFE03800
667 00FF838FE07800007F838FE07000007F8707F07000007FC707F0F000003FCF07F8E000003FCE03
668 F8E000001FEE03F9C000001FFC01FDC000001FFC01FFC000000FFC01FF8000000FF800FF800000
669 07F800FF00000007F0007F00000007F0007F00000003F0007E00000003E0003E00000001E0003C
670 00000001C0001C000035207E9F3A>I<7FFF807FFC7FFF807FFC7FFF807FFC03FE000F0001FE00
671 1E0000FF003C0000FF807800007FC07800003FE0F000001FE1E000000FF3C000000FFF80000007
672 FF00000003FE00000001FE00000000FF00000000FF80000000FFC0000001FFC0000003DFE00000
673 078FF00000078FF800000F07FC00001E03FC00003C01FE00007800FF0000F000FF8000E0007FC0
674 01E0003FC0FFFC01FFFFFFFC01FFFFFFFC01FFFF28207F9F2B>I<FFFF801FFCFFFF801FFCFFFF
675 801FFC0FF80003C007F800038007FC00078003FC00070003FE000F0001FE000E0001FF000E0000
676 FF001C0000FF001C00007F803800007F803800007FC07800003FC07000003FE0F000001FE0E000
677 001FF1E000000FF1C000000FF9C0000007FB80000007FB80000003FF00000003FF00000003FF00
678 000001FE00000001FE00000000FC00000000FC0000000078000000007800000000700000000070
679 00000000F000000000E000000001E000007C01C00000FE03C00000FE03800000FE07800000FE0F
680 000000FC1E000000787C0000003FF00000000FC0000000262E7E9F2B>I
681 E /Fl 3 16 df<FFFFFFC0FFFFFFC01A027C8B23>0 D<0001FE00000007FF8000001E01E00000
682 7800780000E0001C000180000600030000030006000001800C000000C00C000000C01800000060
683 300000003030000000303000000030600000001860000000186000000018C00000000CC0000000
684 0CC00000000CC00000000CC00000000CC00000000CC00000000CC00000000CC00000000C600000
685 00186000000018600000001830000000303000000030300000003018000000600C000000C00C00
686 0000C006000001800300000300018000060000E0001C000078007800001E01E0000007FF800000
687 01FE0000262B7DA02D>13 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7F
688 FE3FFC1FF80FF003C010127D9317>15 D E /Fm 54 122 df<1C007F007F00FF80FF80FF807F00
689 7F001C0009097B8813>46 D<003F800001FFF00007E0FC000FC07E001F803F001F001F003F001F
690 803E000F807E000FC07E000FC07E000FC07E000FC0FE000FE0FE000FE0FE000FE0FE000FE0FE00
691 0FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0FE
692 000FE07E000FC07E000FC07E000FC07E000FC03F001F803F001F801F001F001F803F000FC07E00
693 07E0FC0001FFF000003F80001B277DA622>48 D<000E00001E00007E0007FE00FFFE00FFFE00F8
694 FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
695 FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
696 FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800007FFF0000FFFFC00
697 1E03FE003800FF807C003F80FE003FC0FF001FC0FF001FE0FF000FE0FF000FE07E000FE03C001F
698 E000001FE000001FC000001FC000003F8000003F0000007E000000FC000000F8000001F0000003
699 E00000078000000F0000001E0000003C00E0007000E000E000E001C001C0038001C0060001C00F
700 FFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003
701 FFF00007FFFC000F80FE001F007F003F807F003F803F803F803F803F803F801F803F801F003F80
702 00007F0000007F0000007E000000FC000001F8000007F00000FFC00000FFC0000001F80000007E
703 0000003F0000003F8000001FC000001FC000001FE000001FE03C001FE07E001FE0FF001FE0FF00
704 1FE0FF001FC0FF003FC0FE003F807C007F003F00FE001FFFFC0007FFF00000FF80001B277DA622
705 >I<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E0000
706 0E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E00
707 0E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE
708 000000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007F
709 FFF81D277EA622>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF
710 00001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C7FC0001DFFF8001F
711 80FC001E003F0008003F0000001F8000001FC000001FC000001FE000001FE018001FE07C001FE0
712 FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFFC
713 0003FFF00000FF80001B277DA622>I<0007F800003FFE0000FFFF0001FC078003F00FC007C01F
714 C00F801FC01F801FC01F001FC03F000F803F0000007E0000007E0000007E000000FE020000FE1F
715 F000FE3FFC00FE603E00FE801F00FF801F80FF000FC0FF000FC0FE000FE0FE000FE0FE000FE0FE
716 000FE07E000FE07E000FE07E000FE07E000FE03E000FE03F000FC01F000FC01F001F800F801F00
717 07E07E0003FFFC0001FFF800003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF0
718 3FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E00070
719 00E000E0000001E0000001C000000380000007800000070000000F0000001F0000001E0000003E
720 0000003E0000007E0000007C0000007C000000FC000000FC000000FC000000FC000001FC000001
721 FC000001FC000001FC000001FC000001FC000001FC000000F80000007000001C297CA822>I<00
722 3FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F803E000F803F000F80
723 3F800F803FC00F803FF01F001FFC1E001FFE3C000FFFF8000FFFE00007FFF80001FFFC0001FFFE
724 0007FFFF000F0FFF801E03FFC03E01FFC07C007FE07C001FE0F8000FE0F80007E0F80003E0F800
725 03E0F80003E0F80003C07C0003C07E0007803F000F001FC03F000FFFFC0003FFF800007FC0001B
726 277DA622>I<007F800001FFF00007FFF8000FC0FC001F803E003F001F007E001F807E001F807E
727 000F80FE000FC0FE000FC0FE000FC0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE07E001FE0
728 7E001FE03F003FE01F002FE00F80CFE007FF8FE001FF0FE000080FE000000FC000000FC000000F
729 C000001F803E001F807F001F807F003F007F003E007F007E007E00FC003E03F8001FFFE0000FFF
730 800001FE00001B277DA622>I<1C007F007F00FF80FF80FF807F007F001C000000000000000000
731 000000000000000000001C007F007F00FF80FF80FF807F007F001C00091B7B9A13>I<00000780
732 000000000780000000000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000
733 003FF0000000003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC
734 00000000E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF000000
735 07007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE000001C001F
736 E000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F80000F00007FC0000
737 E00003FC0000E00003FC0001C00001FE0001C00001FE0003C00001FF00FFFE003FFFFCFFFE003F
738 FFFCFFFE003FFFFC2E297EA833>65 D<FFFFFFF800FFFFFFFF00FFFFFFFFC003F8001FE003F800
739 0FF003F80007F803F80003F803F80003FC03F80003FC03F80001FC03F80001FC03F80001FC03F8
740 0003FC03F80003F803F80003F803F80007F003F8000FF003F8001FC003F800FF8003FFFFFE0003
741 FFFFFFC003F8000FF003F80003F803F80001FC03F80001FE03F80000FE03F80000FE03F80000FF
742 03F80000FF03F80000FF03F80000FF03F80000FF03F80000FF03F80000FE03F80001FE03F80003
743 FC03F80007FC03F8001FF8FFFFFFFFE0FFFFFFFFC0FFFFFFFE0028297DA830>I<00007FE00300
744 07FFFC07001FFFFF0F007FF00F9F00FF0001FF01FC0000FF03F800007F07F000003F0FE000001F
745 1FC000001F1FC000000F3F8000000F3F800000077F800000077F800000077F00000000FF000000
746 00FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF0000
747 00007F000000007F800000007F800000073F800000073F800000071FC00000071FC000000E0FE0
748 00000E07F000001C03F800003C01FC00007800FF0001F0007FF007C0001FFFFF800007FFFE0000
749 007FF00028297CA831>I<FFFFFFFC0000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0003
750 FC0003FC0000FE0003FC00007F0003FC00003F8003FC00001FC003FC00001FC003FC00000FE003
751 FC00000FE003FC000007F003FC000007F003FC000007F003FC000007F003FC000007F803FC0000
752 07F803FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803
753 FC000007F803FC000007F803FC000007F003FC000007F003FC000007F003FC00000FE003FC0000
754 0FE003FC00000FC003FC00001FC003FC00003F8003FC00007F0003FC0000FF0003FC0003FC0003
755 FC001FF800FFFFFFFFF000FFFFFFFF8000FFFFFFFC00002D297EA834>I<FFFFFFFFE0FFFFFFFF
756 E0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F003FC0000F003FC00007003FC00
757 007003FC00007003FC01C07803FC01C03803FC01C03803FC01C03803FC03C00003FC03C00003FC
758 0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00E03
759 FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C03FC00003C03FC000038
760 03FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFF
761 F027297EA82C>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003
762 FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC01C07003FC01C070
763 03FC01C07003FC01C00003FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC0
764 0003FC0FC00003FC03C00003FC03C00003FC01C00003FC01C00003FC01C00003FC01C00003FC00
765 000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
766 000000FFFFFC0000FFFFFC0000FFFFFC000024297EA82A>I<00007FE003000007FFFC0700001F
767 FFFF0F00007FF00F9F0000FF0001FF0001FC0000FF0003F800007F0007F000003F000FE000001F
768 001FC000001F001FC000000F003F8000000F003F80000007007F80000007007F80000007007F00
769 00000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000000
770 00FF0000000000FF0000000000FF0000FFFFF87F0000FFFFF87F8000FFFFF87F800000FF003F80
771 0000FF003F800000FF001FC00000FF001FC00000FF000FE00000FF0007F00000FF0003F80000FF
772 0001FC0000FF0000FF0001FF00007FF007FF00001FFFFF9F000007FFFE0F0000007FF003002D29
773 7CA835>I<FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF03FC00003FC003FC00003FC003FC0000
774 3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
775 FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FFFFFF
776 FFC003FFFFFFFFC003FFFFFFFFC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
777 FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC0000
778 3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0FF
779 FFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF30297EA835>I<FFFFFCFFFFFCFFFFFC01FE0001FE00
780 01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
781 01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
782 01FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297FA819>I<FFFF
783 FC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00000003FC00000003
784 FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
785 03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
786 0003FC0001C003FC0001C003FC0001C003FC0001C003FC0003C003FC00038003FC00038003FC00
787 078003FC00078003FC000F8003FC000F8003FC001F8003FC007F8003FC01FF00FFFFFFFF00FFFF
788 FFFF00FFFFFFFF0022297EA828>76 D<FFFE0000003FFF80FFFE0000003FFF80FFFF0000007FFF
789 8003FF0000007FE00003FF0000007FE00003BF800000EFE00003BF800000EFE000039FC00001CF
790 E000039FC00001CFE000038FE000038FE000038FE000038FE000038FE000038FE0000387F00007
791 0FE0000387F000070FE0000383F8000E0FE0000383F8000E0FE0000381FC001C0FE0000381FC00
792 1C0FE0000381FC001C0FE0000380FE00380FE0000380FE00380FE00003807F00700FE00003807F
793 00700FE00003803F80E00FE00003803F80E00FE00003803F80E00FE00003801FC1C00FE0000380
794 1FC1C00FE00003800FE3800FE00003800FE3800FE000038007F7000FE000038007F7000FE00003
795 8007F7000FE000038003FE000FE000038003FE000FE000038001FC000FE000038001FC000FE000
796 038000F8000FE000FFFE00F803FFFF80FFFE00F803FFFF80FFFE007003FFFF8039297DA840>I<
797 FFFC00007FFFFFFE00007FFFFFFF00007FFF03FF800001C003FFC00001C003BFE00001C0039FE0
798 0001C0039FF00001C0038FF80001C00387FC0001C00383FE0001C00381FF0001C00380FF8001C0
799 03807F8001C003807FC001C003803FE001C003801FF001C003800FF801C0038007FC01C0038003
800 FC01C0038003FE01C0038001FF01C0038000FF81C00380007FC1C00380003FE1C00380001FF1C0
801 0380000FF1C00380000FF9C003800007FDC003800003FFC003800001FFC003800000FFC0038000
802 007FC0038000007FC0038000003FC0038000001FC0038000000FC00380000007C0FFFE000003C0
803 FFFE000001C0FFFE000001C030297EA835>I<0000FFC00000000FFFFC0000003F807F000000FE
804 001FC00001F80007E00003F00003F00007E00001F8000FE00001FC001FC00000FE001FC00000FE
805 003F8000007F003F8000007F007F8000007F807F0000003F807F0000003F807F0000003F80FF00
806 00003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003F
807 C0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F803F80
808 00007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F00003F80003F80007F0
809 0001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FFC000002A297CA833>I<FF
810 FFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC0007F003FC0003F803FC0003FC03FC0001FC
811 03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001
812 FC03FC0003FC03FC0003F803FC0007F003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC00
813 000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
814 00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFF00000FF
815 FFF00000FFFFF0000027297EA82E>I<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC003FE0
816 0003FC000FF00003FC0007F80003FC0003FC0003FC0001FC0003FC0001FE0003FC0001FE0003FC
817 0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FC0003FC0003F80003FC0007F8
818 0003FC000FE00003FC003FC00003FFFFFE000003FFFFFE000003FC00FF800003FC003FC00003FC
819 001FE00003FC000FF00003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F8
820 0003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80E03FC0007F80E03FC
821 0003F80E03FC0001FC1CFFFFF000FE1CFFFFF0007FF8FFFFF0000FE02F297EA832>82
822 D<00FF00C003FFE1C00FFFF9C01F80FFC03F003FC03E000FC07C0007C07C0007C0FC0003C0FC00
823 03C0FC0001C0FE0001C0FE0001C0FF000000FFC000007FFC00007FFFE0003FFFF8001FFFFE001F
824 FFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE000001FF000000FF0000007F0E00003F0
825 E00003F0E00003F0E00003F0F00003E0F00003E0F80007E0FC0007C0FF000F80FFE01F80E3FFFF
826 00E1FFFC00C01FF0001C297CA825>I<7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F
827 807C007F800F8078007F80078078007F80078070007F800380F0007F8003C0F0007F8003C0E000
828 7F8001C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C000007F80000000007F8000
829 0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000
830 7F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000
831 0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000000000
832 7F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I<FFFFF000FFFEFFFFF000
833 FFFEFFFFF000FFFE03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003
834 FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000
835 038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003
836 FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000
837 038003FC0000038003FC0000038003FC0000038001FC0000070001FE0000070000FE00000E0000
838 7F00000E00003F00003C00001FC0007800000FF003F0000007FFFFE0000000FFFF800000001FFC
839 00002F297EA834>I<FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC003FC00
840 03FC0000700003FC0003FC0000700003FE0003FE0000F00001FE0001FE0000E00001FE0001FE00
841 00E00001FF0001FF0001E00000FF0001FF0001C00000FF0001FF0001C000007F8003FF80038000
842 007F8003FF80038000007FC007FFC0078000003FC0073FC0070000003FC0073FC0070000003FE0
843 0F3FE00F0000001FE00E1FE00E0000001FE00E1FE00E0000000FF01C0FF01C0000000FF01C0FF0
844 1C0000000FF01C0FF81C00000007F83807F83800000007F83807F83800000007FC7807FC780000
845 0003FC7003FC7000000003FC7003FC7000000003FEF003FEF000000001FEE001FEE000000001FE
846 E001FEE000000000FFC000FFC000000000FFC000FFC000000000FFC000FFC0000000007F80007F
847 80000000007F80007F80000000007F80007F80000000003F00003F00000000003F00003F000000
848 00003F00003F00000000001E00001E00000000001E00001E00000042297FA845>87
849 D<03FF80000FFFF0001F01FC003F80FE003F807F003F803F003F803F801F003F8000003F800000
850 3F8000003F8000003F80003FFF8001FC3F800FE03F801F803F803F003F807E003F80FC003F80FC
851 003F80FC003F80FC003F80FC005F807E00DF803F839FFC1FFE0FFC03F803FC1E1B7E9A21>97
852 D<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
853 00000FE000000FE000000FE000000FE000000FE000000FE1FE000FE7FF800FFE07E00FF803F00F
854 F001F80FE000FC0FE000FC0FE0007E0FE0007E0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F
855 0FE0007F0FE0007F0FE0007F0FE0007E0FE0007E0FE0007E0FE000FC0FE000FC0FF001F80FF803
856 F00F9C0FE00F0FFF800E01FC00202A7EA925>I<003FF00001FFFC0003F03E000FC07F001F807F
857 003F007F003F007F007F003E007E0000007E000000FE000000FE000000FE000000FE000000FE00
858 0000FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007000FE00E0003
859 F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F0000007F000
860 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
861 003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E0007F07E0007F07E0007
862 F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F07E0007F07E00
863 07F03F0007F03F0007F01F800FF00FC01FF007E07FFF01FFE7FF007F87FF202A7EA925>I<003F
864 C00001FFF00003E07C000F803E001F801F001F001F003F000F807E000F807E000FC07E000FC0FE
865 0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000FE000000FE0000007E0000007E0000007F000000
866 3F0001C01F0001C00F80038007C0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F800
867 3FFC007E3E01FC7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007
868 F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007
869 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807F
870 FF807FFF80182A7EA915>I<007F80F001FFE3F807C0FE1C0F807C7C1F003E7C1F003E103F003F
871 003F003F003F003F003F003F003F003F003F003F001F003E001F003E000F807C0007C0F80005FF
872 E0000C7F8000180000001C0000001C0000001E0000001FFFF8001FFFFF000FFFFFC007FFFFE003
873 FFFFF00FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C0001F07C0001F0
874 3F0007E00FC01F8007FFFF00007FF0001E287E9A22>I<FFE00000FFE00000FFE000000FE00000
875 0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000
876 000FE000000FE07E000FE1FF800FE30FC00FE40FE00FE807E00FF807F00FF007F00FF007F00FE0
877 07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
878 E007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA9
879 25>I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0
880 FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
881 E00FE00FE0FFFEFFFEFFFE0F2B7EAA12>I<FFE00000FFE00000FFE000000FE000000FE000000F
882 E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000
883 0FE03FF80FE03FF80FE03FF80FE007000FE00E000FE03C000FE078000FE0F0000FE1E0000FE3C0
884 000FE780000FEFC0000FFFE0000FFFE0000FF7F0000FE3F8000FC1FC000FC1FC000FC0FE000FC0
885 7F000FC07F000FC03F800FC01FC00FC01FC0FFFC7FFCFFFC7FFCFFFC7FFC1E2A7EA923>107
886 D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
887 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
888 E0FFFEFFFEFFFE0F2A7EA912>I<FFC07F001FC000FFC1FFC07FF000FFC307E0C1F8000FC407F1
889 01FC000FC803F200FC000FD803FE00FE000FD003FC00FE000FD003FC00FE000FE003F800FE000F
890 E003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800
891 FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE0
892 03F800FE000FE003F800FE000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFF
893 E0FFFE3FFF8FFFE0331B7D9A38>I<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F0
894 0FD007F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007
895 F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE
896 3FFFFFFE3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F0007E03F00
897 07E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE
898 0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC00FC01F8007F07F0001FFFC00
899 003FE0001D1B7E9A22>I<FFE1FE00FFE7FF80FFFE0FE00FF803F00FF001F80FE001FC0FE000FC
900 0FE000FE0FE000FE0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE000
901 7F0FE0007E0FE000FE0FE000FE0FE000FC0FE001FC0FF001F80FF803F00FFC0FE00FEFFF800FE1
902 FC000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000FF
903 FE0000FFFE0000FFFE000020277E9A25>I<FFC3E0FFC7F8FFCC7C0FD8FE0FD0FE0FD0FE0FF0FE
904 0FE07C0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
905 0FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00171B7E9A1B>114 D<03FE300FFFF03E03F0
906 7800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF8
907 0007FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E9A1B>
908 I<00700000700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFE0FFFF
909 E0FFFFE007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
910 0007F00007F07007F07007F07007F07007F07007F07007F07003F0E001F8C000FFC0003F001426
911 7FA51A>I<FFE07FF0FFE07FF0FFE07FF00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
912 07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
913 E007F00FE007F00FE007F00FE00FF00FE00FF007E017F003F067FF01FFC7FF007F87FF201B7D9A
914 25>I<FFFE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801C003F801C001FC0380
915 01FC038001FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F9C00003FFC00001FF8
916 00001FF800000FF000000FF000000FF0000007E0000007E0000003C0000003C000201B7F9A23>
917 I<FFFC7FFC1FFCFFFC7FFC1FFCFFFC7FFC1FFC0FE00FE001C007F007E0038007F007E0038007F8
918 07F0078003F807F0070003F807F8070001FC0FF80E0001FC0FF80E0001FE1FFC1E0000FE1CFC1C
919 0000FE1CFE1C0000FF387E3C00007F387E3800007F787F3800003FF03F7000003FF03F7000003F
920 E01FF000001FE01FE000001FE01FE000000FC00FC000000FC00FC000000FC00FC0000007800780
921 000007800780002E1B7F9A31>I<FFFC1FFEFFFC1FFEFFFC1FFE07F0078003F8070001FC0F0001
922 FE1E0000FE3C00007F7800003FF800003FF000001FE000000FE0000007F0000007F800000FF800
923 001FFC00003DFE000038FF0000787F0000F03F8001E03FC003C01FE003800FE0FFF03FFFFFF03F
924 FFFFF03FFF201B7F9A23>I<FFFE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801
925 C003F801C001FC038001FC038001FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F
926 9C00003FFC00001FF800001FF800000FF000000FF0000007F0000007E0000007E0000003C00000
927 03C000000380000003800000078000380700007C070000FE0E0000FE0E0000FE1C0000FE380000
928 7C7000003FE000000F80000020277F9A23>I E /Fn 79 125 df<001F83E000F06E3001C07878
929 0380F8780300F03007007000070070000700700007007000070070000700700007007000FFFFFF
930 800700700007007000070070000700700007007000070070000700700007007000070070000700
931 700007007000070070000700700007007000070070000700700007007000070070007FE3FF001D
932 20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700
933 00070000FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
934 E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000E0E001
935 C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE00700E00700E007
936 00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
937 00E00700E00700E07FE7FE1720809F19>I<70F8F8F8F8F8F8F870707070707070707070202020
938 2020000000000070F8F8F87005217CA00D>33 D<00780000008400000184000003020000070200
939 00070200000702000007020000070400000704000007080000070800000310000003A00FFC03C0
940 03E0038001C001C0008001C0010003E0010004E0020008F0020018700400307808007038080070
941 1C1000F01E1000F00E2000F0074000F003C0087003C0087801C010380670301C18386007E00F80
942 1E227EA023>38 D<70F8FCFC74040404080810102040060E7C9F0D>I<00200040008001000200
943 06000C000C00180018003000300030007000600060006000E000E000E000E000E000E000E000E0
944 00E000E000E000E0006000600060007000300030003000180018000C000C000600020001000080
945 004000200B2E7DA112>I<800040002000100008000C00060006000300030001800180018001C0
946 00C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000C000C000C001C001
947 800180018003000300060006000C00080010002000400080000B2E7DA112>I<01800180018001
948 800180C183F18F399C0FF003C003C00FF0399CF18FC1830180018001800180018010147DA117>
949 I<70F8FCFC74040404080810102040060E7C840D>44 D<FFC0FFC00A027F8A0F>I<70F8F8F870
950 05057C840D>I<000100030003000600060006000C000C000C0018001800180030003000300060
951 0060006000C000C000C00180018001800300030003000600060006000C000C000C001800180018
952 00300030003000600060006000C000C000C000102D7DA117>I<03F0000E1C001C0E0018060038
953 0700700380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0
954 03C0F003C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003
955 F000121F7E9D17>I<018003800F80F38003800380038003800380038003800380038003800380
956 038003800380038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0
957 000C1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C00007800007
958 80000F00000E00001C0000380000700000600000C0000180000300000600400C00401800401000
959 803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F8078078078078038
960 0F80000F80000F00000F00000E00001C0000380003F000003C00000E00000F0000078000078000
961 07C02007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17>I<
962 000600000600000E00000E00001E00002E00002E00004E00008E00008E00010E00020E00020E00
963 040E00080E00080E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00
964 000E00000E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE0001000001000
965 0010000010000010000010000011F000161C00180E001007001007800003800003800003C00003
966 C00003C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17
967 >I<007C000182000701000E03800C07801C0780380300380000780000700000700000F1F000F2
968 1C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C070038038
969 03803807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF80400100
970 80020080020080040000080000080000100000200000200000400000400000C00000C00001C000
971 018000038000038000038000038000078000078000078000078000078000078000078000030000
972 121F7D9D17>I<03F0000C0C001006003003002001806001806001806001807001807803003E03
973 003F06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0C000
974 C0C000C0C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C0038
975 0600380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C038
976 07C0180BC00E13C003E3C0000380000380000380000700300700780600780E00700C0020180010
977 70000FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70
978 F8F8F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<0FC03070
979 40384038E03CF03CF03C603C0038007000E000C001800180010003000200020002000200020002
980 000000000000000000000007000F800F800F8007000E207D9F15>63 D<00010000000380000003
981 8000000380000007C0000007C0000007C0000009E0000009E0000009E0000010F0000010F00000
982 10F00000207800002078000020780000403C0000403C0000403C0000801E0000801E0000FFFE00
983 01000F0001000F0001000F00020007800200078002000780040003C00E0003C01F0007E0FFC03F
984 FE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F800780
985 0F8007800F8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007801E0007
986 800F0007800F8007800780078007C0078007C0078007C0078007C0078007C00780078007800F80
987 07800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0038005C0
988 070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040F8000000F80000
989 00F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000007C0000407C00
990 00403C0000401C0000401E0000800E000080070001000380020001C0040000703800000FC0001A
991 217D9F21>I<FFFFE0000F803C0007801E000780070007800380078003C0078001E0078001E007
992 8001F0078000F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8
993 078000F8078000F8078000F0078000F0078000F0078001E0078001E0078003C007800380078007
994 0007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F000780030007800300078001
995 0007800180078000800780008007800080078080800780800007808000078080000781800007FF
996 800007818000078080000780800007808000078080000780002007800020078000200780004007
997 80004007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F
998 800F00078003000780030007800100078001800780008007800080078000800780008007808000
999 0780800007808000078080000781800007FF800007818000078080000780800007808000078080
1000 0007800000078000000780000007800000078000000780000007800000078000000FC00000FFFE
1001 0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001E00F0000E01E0000601E00
1002 00603C0000603C0000207C00002078000020F8000000F8000000F8000000F8000000F8000000F8
1003 000000F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C0001E01E0001E01E0001E0
1004 0F0001E0070001E0038002E000E0046000781820000FE0001E217D9F24>I<FFF8FFF80F800F80
1005 07800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F
1006 0007800F0007800F0007FFFF0007800F0007800F0007800F0007800F0007800F0007800F000780
1007 0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D
1008 1F7E9E22>I<FFFC0FC00780078007800780078007800780078007800780078007800780078007
1009 800780078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>I<0FFFC0
1010 007C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00
1011 003C00003C00003C00003C00003C00003C00003C00003C00003C00203C00F83C00F83C00F83C00
1012 F0380040780040700030E0000F800012207E9E17>I<FFFE000FC0000780000780000780000780
1013 000780000780000780000780000780000780000780000780000780000780000780000780000780
1014 0007800007800207800207800207800207800607800407800407800C07801C0F807CFFFFFC171F
1015 7E9E1C>76 D<FF80001FF80F80001F800780001F0005C0002F0005C0002F0005C0002F0004E000
1016 4F0004E0004F000470008F000470008F000470008F000438010F000438010F000438010F00041C
1017 020F00041C020F00041C020F00040E040F00040E040F00040E040F000407080F000407080F0004
1018 07080F000403900F000403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80
1019 FFE0C1FFF8251F7E9E2A>I<FF803FF807C007C007C0038005E0010005E0010004F00100047801
1020 0004780100043C0100043C0100041E0100040F0100040F010004078100040781000403C1000401
1021 E1000401E1000400F1000400F1000400790004003D0004003D0004001F0004001F0004000F0004
1022 000700040007000E0003001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007
1023 801E000F000F000E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0
1024 F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003
1025 E07C0003E03C0003C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0F000001F
1026 80001C217D9F23>I<FFFFE0000F80780007801C0007801E0007800F0007800F8007800F800780
1027 0F8007800F8007800F8007800F8007800F0007801E0007801C000780780007FFE0000780000007
1028 800000078000000780000007800000078000000780000007800000078000000780000007800000
1029 07800000078000000FC00000FFFC0000191F7E9E1F>I<001F800000F0F00001C0380007801E00
1030 0F000F000E0007001E0007803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001
1031 F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E0780001E07C00
1032 03E03C0003C03C0F03C01E1087800E2047000F204F0007A03E0001E0380000F0F010001FB01000
1033 003010000038300000387000003FF000001FE000001FE000000FC0000007801C297D9F23>I<FF
1034 FF80000F80F0000780780007803C0007801E0007801E0007801F0007801F0007801F0007801F00
1035 07801E0007801E0007803C00078078000780F00007FF80000781C0000780E0000780F000078070
1036 0007807800078078000780780007807C0007807C0007807C0007807C0407807E0407803E040FC0
1037 1E08FFFC0F10000003E01E207E9E21>I<07E0800C1980100780300380600180600180E00180E0
1038 0080E00080E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F8000078000
1039 03C00003C00001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012
1040 217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F001080
1041 0F0010800F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
1042 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
1043 00000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C00780038007800100078001
1044 000780010007800100078001000780010007800100078001000780010007800100078001000780
1045 010007800100078001000780010007800100078001000780010007800100078001000780010003
1046 8002000380020001C0020001C0040000E008000070180000382000000FC0001D207E9E22>I<FF
1047 F003FE1F8000F80F0000600F800060078000400780004003C0008003C0008003C0008001E00100
1048 01E0010001F0010000F0020000F0020000F806000078040000780400003C0800003C0800003C08
1049 00001E1000001E1000001F3000000F2000000F20000007C0000007C0000007C000000380000003
1050 800000038000000100001F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F000780
1051 01000F0007C00100078007C00200078007C00200078007C0020003C009E0040003C009E0040003
1052 C009E0040003E010F00C0001E010F0080001E010F0080001F02078080000F02078100000F02078
1053 100000F0403C10000078403C20000078403C20000078C03E2000003C801E4000003C801E400000
1054 3C801E4000001F000F8000001F000F8000001F000F8000001E00078000000E00070000000E0007
1055 0000000C000300000004000200002C207F9E2F>I<FFF003FF1F8000F80F8000600780004007C0
1056 004003E0008001E0008001F0010000F0030000F80200007C0400003C0400003E0800001E080000
1057 1F1000000FB0000007A0000007C0000003C0000003C0000003C0000003C0000003C0000003C000
1058 0003C0000003C0000003C0000003C0000003C0000007C000007FFE00201F7F9E22>89
1059 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
1060 C0C0C0C0C0FEFE072D7CA10D>91 D<FEFE06060606060606060606060606060606060606060606
1061 06060606060606060606060606060606060606FEFE072D7FA10D>93 D<081020204040808080B8
1062 FCFC7C38060E7D9F0D>96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00
1063 078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>
1064 I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E
1065 000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00780E00
1066 700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C700070
1067 00F000F000F000F000F000F00070007000380138011C020E0C03F010147E9314>I<000380003F
1068 8000038000038000038000038000038000038000038000038000038000038003E380061B801C07
1069 80380380380380700380700380F00380F00380F00380F00380F00380F003807003807003803803
1070 803807801C07800E1B8003E3F815207E9F19>I<03F0000E1C001C0E0038070038070070070070
1071 0380F00380F00380FFFF80F00000F00000F000007000007000003800801800800C010007060001
1072 F80011147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF007000700
1073 07000700070007000700070007000700070007000700070007000700070007007FF01020809F0E
1074 >I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E
1075 380033E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C0
1076 0030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E0000
1077 0E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C0
1078 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
1079 FFE7FC16207F9F19>I<1C001E003E001E001C000000000000000000000000000E007E000E000E
1080 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>
1081 I<00E001F001F001F000E0000000000000000000000000007007F000F000700070007000700070
1082 00700070007000700070007000700070007000700070007000700070007000706070F060F0C061
1083 803F000C28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00
1084 000E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38
1085 000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE00
1086 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
1087 000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E
1088 81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
1089 0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
1090 000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C0
1091 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC
1092 16147F9319>I<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000
1093 F0F000F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FE
1094 C3800F01C00F00E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E
1095 00F00E00E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E
1096 0000FFE000151D7F9319>I<03E0800619801C05803C0780380380780380700380F00380F00380
1097 F00380F00380F00380F003807003807803803803803807801C0B800E138003E380000380000380
1098 000380000380000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E
1099 000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030
1100 704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F800D14
1101 7E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E000E000E000E00
1102 0E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E
1103 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
1104 03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E01C00C00E00800E00800E0080070100
1105 07010003820003820003820001C40001C40001EC0000E80000E800007000007000007000002000
1106 15147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C080
1107 0704C0800704E080038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C
1108 0000601800004008001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC
1109 00007800003800003C00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714
1110 809318>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001
1111 C40001C40001EC0000E80000E800007000007000007000002000002000004000004000004000F0
1112 8000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000E001E0
1113 01C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FFFFFFFFFFF02C01808C
1114 2D>124 D E /Fo 82 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8
1115 F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D
1116 0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07FFFC0
1117 0F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C00
1118 1E3C001E3C001E3C000C1800131C7E9B18>I<01C00007E0000FF0000E70001C38001C38001C38
1119 001C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC
1120 00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>38
1121 D<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001C0038
1122 0038007000700070007000E000E000E000E000E000E000E000E000700070007000700038003800
1123 1C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F0007800380
1124 01C001C000E000E000E000E00070007000700070007000700070007000E000E000E000E001C001
1125 C0038007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180
1126 F1C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C000
1127 01C00001C00011147D9718>I<00600000F00000F00000F00000F00000F00000F00000F0007FFF
1128 C0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000F00000600013147E9718
1129 >I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<
1130 3078FCFC78300606778518>I<000300000780000780000F80000F00001F00001E00001E00003E
1131 00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C00007C0000780
1132 000F80000F00000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F000
1133 0060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E0
1134 00E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C038
1135 03801C07001F1F000FFE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80FB
1136 80438003800380038003800380038003800380038003800380038003800380038003807FFCFFFE
1137 7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E0
1138 0000E00001C00001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F8000
1139 1E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801
1140 C03001C00001C00003C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000
1141 E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F0000
1142 3F0000770000770000E70001E70001C7000387000787000707000E07001E07003C070038070078
1143 0700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700000700000700007FF000FFF800
1144 7FF0151C7F9B18>I<1FFF803FFF803FFF80380000380000380000380000380000380000380000
1145 3800003BF8003FFE003FFF003C07801803C00001C00000E00000E06000E0F000E0F000E0E001C0
1146 7003C07C0F803FFF001FFC0003F000131C7E9B18>I<007E0001FF0007FF800F83C01E03C01C03
1147 C0380180380000700000700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000
1148 E07000E07000E07000E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>I<E00000FF
1149 FFE0FFFFE0FFFFE0E003C0E00780000700000E00001E00001C0000380000380000700000700000
1150 E00000E00000E00001C00001C00001C00001C00003C00003800003800003800003800003800003
1151 8000038000131D7E9C18>I<03F8000FFE001FFF003E0F803803807001C07001C07001C07001C0
1152 3803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000E0E000E0E000E0E000E0
1153 7001C07803C03E0F801FFF000FFE0003F800131C7E9B18>I<3078FCFC78300000000000000000
1154 3078FCFC78300614779318>58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F0
1155 60071A789318>I<000300000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E
1156 0000FC0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F8000078000
1157 030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0
1158 FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00003F00001FC00007E00003F00001FC
1159 00007E00003F00001F80001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC00
1160 00F0000060000011187D9918>I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071
1161 E3E071C1E0E1C1E0E380E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF8038
1162 7F003C1C001E00E00F83E007FFC001FF80007E00131C7E9B18>64 D<00700000F80000F80000D8
1163 0000D80001DC0001DC0001DC00018C00038E00038E00038E00038E000306000707000707000707
1164 000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18
1165 >I<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01F
1166 FF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FF
1167 FFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E0
1168 7000E0700000E00000E00000E00000E00000E00000E00000E00000E000007000007000E07000E0
1169 3800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B18>I<FFFFF0FFFFF0FFFFF01C00
1170 701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E
1171 001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18
1172 >69 D<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C00
1173 1FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C00001C00001C0000
1174 FFC000FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001
1175 C07001C0700000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF07001C07001C07003
1176 C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C
1177 01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C
1178 01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B
1179 18>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C000
1180 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
1181 7FFF00FFFF807FFF00111C7D9B18>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00
1182 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
1183 700E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F8
1184 3B06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E0
1185 38F8E03870E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F
1186 9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1
1187 C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0D
1188 C07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E0
1189 0380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
1190 0380E00380F00780700700780F007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC0
1191 1C03C01C01E01C00E01C00701C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF80
1192 1FFE001C00001C00001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F
1193 9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E003
1194 80E00380E00380E00380E00380E00380E00380E00380E00380E1E380E1E380F0E78070F700787F
1195 007FFF003FFE000FFC00001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FF
1196 FE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001F
1197 FE001C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F
1198 00F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E00000700000
1199 7800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E001E0
1200 F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E070
1201 38E070380070000070000070000070000070000070000070000070000070000070000070000070
1202 0000700000700000700000700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF
1203 83FEFF83FE1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C
1204 00701C00701C00701C00701C00701C00701C00701C00700E00E00F01E00783C003FF8001FF0000
1205 7C00171C809B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E03800E03800E0
1206 3800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC0
1207 0D8D800D05800F07800F07800E0380151C7F9B18>87 D<FFF8FFF8FFF8E000E000E000E000E000
1208 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
1209 00E000E000E000E000E000FFF8FFF8FFF80D24779F18>91 D<600000F00000F00000F800007800
1210 007C00003C00003C00003E00001E00001F00000F00000F00000F800007800007C00003C00003C0
1211 0003E00001E00001F00000F00000F800007800007800007C00003C00003E00001E00001E00001F
1212 00000F00000F8000078000078000030011247D9F18>I<FFF8FFF8FFF800380038003800380038
1213 003800380038003800380038003800380038003800380038003800380038003800380038003800
1214 3800380038003800380038FFF8FFF8FFF80D247F9F18>I<018007C01FF07EFCF83EE00E0F067C
1215 9B18>I<7FFF00FFFF80FFFF807FFF0011047D7F18>I<1FE0003FF8007FFC00781E00300E000007
1216 0000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFFF01FFB
1217 F007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E00
1218 0EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F0070
1219 0F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E07803803
1220 00700000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01FFF
1221 8007FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000038000038003
1222 E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E0038070
1223 0780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00
1224 380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C0
1225 1FFF8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0
1226 007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
1227 0001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E
1228 1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0003800001C
1229 00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFFC00F
1230 FF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E00
1231 0EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
1232 0E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C0000380
1233 000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C00001C0
1234 0001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18
1235 >I<0038007C007C007C003800000000000000000FFC1FFC0FFC001C001C001C001C001C001C00
1236 1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE0
1237 3F800E277E9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF0
1238 0E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E0700
1239 0E03800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000E00000E00000E0
1240 0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
1241 0000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000
1242 FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
1243 001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F001914
1244 819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E
1245 00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE00
1246 1FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C0
1247 3C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00
1248 700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF
1249 800E3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318
1250 >I<01E38007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E0
1251 0380700780700780380F803C1F801FFF800FFB8003E38000038000038000038000038000038000
1252 0380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E000
1253 03C00003C0000380000380000380000380000380000380000380000380000380007FFE00FFFF00
1254 7FFE0015147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC
1255 0003FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<01
1256 80000380000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003
1257 80000380000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013197F98
1258 18>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
1259 0E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8F
1260 F01E03C00E03800E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC
1261 0001DC0000F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C
1262 01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007
1263 070015147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F800007000
1264 00F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8F
1265 F0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE
1266 0000CC0000CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0
1267 007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F0000
1268 1E00003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014
1269 147F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E00000E00000E00000E000
1270 00E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E00000E00000E000
1271 00E00000E00000E00000E00000E00000E00000E00000E000007800007FE0001FE00007E013247E
1272 9F18>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
1273 600424769F18>I<7C0000FF0000FFC00003C00000E00000E00000E00000E00000E00000E00000
1274 E00000E00000E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000
1275 E00000E00000E00000E00000E00000E00000E00000E00000E00003C000FFC000FF00007C000013
1276 247E9F18>I<060C1F1E3FBEFBF8F1F060C00F067C9B18>I E /Fp 10 117
1277 df<0000001FFE000060000003FFFFE000E000001FFFFFF801E000007FFFFFFE03E00001FFFC00
1278 FF07E00007FFC0001FCFE0000FFF000007FFE0001FFC000001FFE0003FF0000000FFE0007FE000
1279 00007FE000FFC00000003FE001FF800000001FE003FF000000000FE007FF000000000FE00FFE00
1280 00000007E00FFE0000000007E01FFC0000000003E01FFC0000000003E03FF80000000003E03FF8
1281 0000000001E03FF80000000001E07FF80000000001E07FF80000000001E07FF00000000000007F
1282 F0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000
1283 FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000
1284 00FFF0000000000000FFF00000000000007FF00000000000007FF00000000000007FF800000000
1285 00007FF80000000001E03FF80000000001E03FF80000000001E03FF80000000001E01FFC000000
1286 0001E01FFC0000000003C00FFE0000000003C00FFE0000000003C007FF00000000078003FF0000
1287 0000078001FF800000000F0000FFC00000001F00007FE00000003E00003FF00000007C00001FFC
1288 000000F800000FFF000003F0000007FFC0000FE0000001FFFC007F800000007FFFFFFF00000000
1289 1FFFFFFC0000000003FFFFE000000000001FFE0000003B3D7BBB46>67 D<0003FF000300003FFF
1290 E0070000FFFFFC0F0001FFFFFE1F0003FE00FF3F0007F0001FFF000FE00007FF001FC00001FF00
1291 3F800000FF003F800000FF007F0000007F007F0000003F007F0000003F00FF0000001F00FF0000
1292 001F00FF0000001F00FF8000000F00FF8000000F00FFC000000F00FFC000000F00FFF000000000
1293 7FF8000000007FFF800000003FFFF80000003FFFFFC000001FFFFFFC00001FFFFFFF00000FFFFF
1294 FFC00007FFFFFFF00003FFFFFFF80000FFFFFFFC00007FFFFFFE00001FFFFFFE000003FFFFFF00
1295 00001FFFFF80000001FFFF800000000FFFC000000003FFC000000000FFC0000000007FE0000000
1296 007FE0700000003FE0F00000003FE0F00000001FE0F00000001FE0F00000001FE0F80000001FE0
1297 F80000001FC0F80000001FC0FC0000001FC0FC0000003F80FE0000003F80FF0000003F00FFC000
1298 007F00FFE00000FE00FFFC0001FC00FDFFC00FF800F87FFFFFF000F01FFFFFC000E003FFFF0000
1299 C0003FF800002B3D7BBB36>83 D<003FFE00000001FFFFE0000007FFFFF800000FE007FC00000F
1300 F001FE00001FF800FF00001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE00007E0003F
1301 E00003C0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000FFFFE00000
1302 1FFFFFE000007FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE0003FE0003F
1303 E0007FC0003FE0007FC0003FE000FF80003FE000FF80003FE000FF80003FE000FF80003FE000FF
1304 80007FE0007FC0007FE0007FC000DFE0003FE0039FF0001FF80F0FFFE007FFFE0FFFE001FFF807
1305 FFE0003FE000FFE02B267DA52F>97 D<0001FFF000000FFFFE00003FFFFF8000FF801FC001FE00
1306 3FC003FC007FE007F8007FE00FF0007FE01FF0007FE03FE0003FC03FE0001F807FE0000F007FC0
1307 0000007FC00000007FC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FF
1308 C0000000FFC0000000FFC00000007FC00000007FC00000007FE00000007FE00000003FE0000000
1309 3FF00000F01FF00000F00FF80001E007F80001E003FC0003C001FF000F8000FFC03F00003FFFFE
1310 00000FFFF8000001FFC00024267DA52B>99 D<0001FF8000000FFFF000003FFFFC0000FF81FE00
1311 03FE007F8007F8003F800FF8001FC00FF0000FE01FE0000FE03FE0000FF03FE00007F07FC00007
1312 F07FC00007F87FC00007F8FFC00007F8FFC00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFC000
1313 0000FFC0000000FFC0000000FFC00000007FC00000007FC00000007FC00000003FE00000003FE0
1314 0000781FE00000781FF00000780FF00000F007F80001F003FC0003E001FE000FC000FFC07F8000
1315 3FFFFE00000FFFF8000000FFC00025267DA52C>101 D<00FE00000000FFFE00000000FFFE0000
1316 0000FFFE00000000FFFE0000000007FE0000000003FE0000000003FE0000000003FE0000000003
1317 FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000
1318 000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003
1319 FE001FFFF003FE001FFFF003FE001FFFF003FE001FFFF003FE0003FC0003FE0003F00003FE0007
1320 E00003FE001F800003FE003F000003FE007E000003FE00FC000003FE03F8000003FE07E0000003
1321 FE0FC0000003FE1F80000003FE3FC0000003FEFFE0000003FFFFF0000003FFFFF0000003FFFFF8
1322 000003FFCFFC000003FF07FE000003FE03FF000003FC03FF000003FC01FF800003FC00FFC00003
1323 FC007FE00003FC003FE00003FC003FF00003FC001FF80003FC000FFC0003FC0007FC0003FC0007
1324 FE0003FC0003FF00FFFFF01FFFFCFFFFF01FFFFCFFFFF01FFFFCFFFFF01FFFFC2E3C7DBB33>
1325 107 D<00FE00FFFE00FFFE00FFFE00FFFE0007FE0003FE0003FE0003FE0003FE0003FE0003FE00
1326 03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
1327 03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
1328 03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00
1329 03FE0003FE0003FE0003FE0003FE00FFFFF8FFFFF8FFFFF8FFFFF8153C7DBB1A>I<0001FFC000
1330 00000FFFF80000007FFFFF000000FF80FF800003FE003FE00007F8000FF0000FF00007F8000FF0
1331 0007F8001FE00003FC003FE00003FE003FE00003FE007FC00001FF007FC00001FF007FC00001FF
1332 007FC00001FF00FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC0
1333 0001FF80FFC00001FF80FFC00001FF80FFC00001FF807FC00001FF007FC00001FF007FC00001FF
1334 003FE00003FE003FE00003FE001FE00003FC001FF00007FC000FF00007F80007F8000FF00003FE
1335 003FE00000FF80FF8000007FFFFF0000000FFFF800000001FFC0000029267DA530>111
1336 D<003FF07003FFFEF007FFFFF01FC01FF03F0003F03E0001F07C0001F07C0000F0FC0000F0FC00
1337 00F0FE0000F0FF000000FFC00000FFFC00007FFFF0003FFFFE003FFFFF801FFFFFC00FFFFFE003
1338 FFFFF000FFFFF8001FFFFC00007FFC000007FE700001FEF00000FEF000007EF800007EF800007E
1339 FC00007EFC00007CFE0000FCFF0000F8FF8001F0FFF00FE0F9FFFFC0F07FFF00C01FF8001F267D
1340 A526>115 D<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F000000
1341 1F0000003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00001FFFFFF0
1342 FFFFFFF0FFFFFFF0FFFFFFF001FF000001FF000001FF000001FF000001FF000001FF000001FF00
1343 0001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF
1344 000001FF000001FF000001FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01
1345 FF003C00FF007800FF8078007F80F0003FC1E0001FFFC0000FFF800001FE001E377EB626>I
1346 E end
1347 %%EndProlog
1348 %%BeginSetup
1349 %%Feature: *Resolution 300
1350 TeXDict begin
1351 %%EndSetup
1352 %%Page: 1 1
1353 bop 0 693 a Fp(C)p Fo(++)32 b Fp(So)s(c)m(k)m(et)h(Classes)p
1354 0 726 1950 17 v 1535 774 a Fn(V)l(ersion:)21 b(27Jan94)14 b(1.6)0
1355 2545 y Fm(Gnanasek)l(aran)23 b(Sw)n(aminathan)p 0 2570 1950
1356 9 v eop
1357 %%Page: 2 2
1358 bop 0 2076 a Fn(Cop)o(yrigh)o(t)226 2075 y(c)214 2076 y Fl(\015)15
1359 b Fn(1992,1993,199)o(4)d(Gnanasek)m(aran)j(Sw)o(aminathan)0
1360 2337 y(This)h(is)f(V)l(ersion:)21 b(27Jan94)15 b(1.6)f(of)h(the)g(C)p
1361 Fo(++)g Fn(family)g(of)g(so)q(c)o(k)o(et)g(classes.)0 2599
1362 y(P)o(ermission)g(is)g(gran)o(ted)f(to)g(mak)o(e)g(and)h(distribute)h(v)o
1363 (erbatim)e(copies)i(of)e(this)h(do)q(cumen)o(t)g(pro)o(vided)g(the)g(cop)o
1364 (y-)0 2661 y(righ)o(t)g(notice)h(and)f(this)h(p)q(ermission)g(notice)g(are)f
1365 (preserv)o(ed)h(on)f(all)h(copies.)p eop
1366 %%Page: 1 3
1367 bop 0 -58 a Fn(So)q(c)o(k)o(et)p Fo(++)15 b Fn(Library)g(Cop)o(yrigh)o(t)g
1368 (Notice)1231 b(1)0 183 y Fk(So)r(c)n(k)n(et)p Fj(++)15 b Fk(Library)f(Cop)n
1369 (yrigh)n(t)h(Notice)62 370 y Fn(Cop)o(yrigh)o(t)g(\(C\))f(1992,1993,199)o(4)e
1370 (Gnanasek)m(aran)j(Sw)o(aminathan)62 507 y(P)o(ermission)h(is)g(gran)o(ted)e
1371 (to)h(use)g(at)g(y)o(our)g(o)o(wn)f(risk)i(and)f(distribute)i(this)e(soft)o
1372 (w)o(are)f(in)i(source)f(and)g(binary)0 569 y(forms)j(pro)o(vided)h(the)g(ab)
1373 q(o)o(v)o(e)g(cop)o(yrigh)o(t)f(notice)h(and)g(this)g(paragraph)f(are)h
1374 (preserv)o(ed)g(on)f(all)i(copies.)31 b(This)0 632 y(soft)o(w)o(are)13
1375 b(is)j(pro)o(vided)g Fo(")p Fn(as)f(is)p Fo(")g Fn(with)h(no)f(express)g(or)g
1376 (implied)j(w)o(arran)o(t)o(y)l(.)p eop
1377 %%Page: 2 4
1378 bop 0 -58 a Fn(Ac)o(kno)o(wledgmen)o(ts)1572 b(2)0 183 y Fk(Ac)n(kno)n
1379 (wledgmen)n(ts)62 370 y Fn(Gordon)16 b(Joly)i Fo(<)p Fn(G.Joly)p
1380 Fo(@)p Fn(cs.ucl.ac.uk)p Fo(>)e Fn(for)h(rep)q(orting)g(bugs)f(in)i(pip)q
1381 (estream)g(class)f(implemen)o(tation)h(and)0 432 y(pro)o(viding)c(an)e(ftp)h
1382 (site)g(for)f(the)h(so)q(c)o(k)o(et)p Fo(++)f Fn(library)h(at)f
1383 (cs.ucl.ac.uk:)p Fo(~)p Fn(ftp/coside/gn)o(u/so)q(c)o(k)o(et)p
1384 Fo(++)p Fn(-1.x.tar.gz)e(He)0 495 y(also)15 b(kno)o(ws)g(ho)o(w)f(to)h(mak)o
1385 (e)g(the)g(so)q(c)o(k)o(et)p Fo(++)f Fn(library)i(a)f(shared)h(library)l(.)62
1386 632 y(Jim)g(Anderson)g(for)f(rep)q(orting)g(a)g(bug)g(in)h(so)q(c)o(kinet.C)
1387 62 769 y(Carl)f(Ga)o(y)g Fo(<)p Fn(cga)o(y)p Fo(@)p Fn
1388 (skinner.cs.uoregon.edu)p Fo(>)f Fn(for)h(rep)q(orting)g(a)g(bug)h(and)f(a)g
1389 (\014x)g(in)h(so)q(c)o(kinet.C)62 906 y(Oliv)o(er)j(Im)o(busc)o(h)f
1390 Fo(<)p Fn(\015ab)q(es)p Fo(@)p Fn(parystec.de)p Fo(>)g Fn(for)f(rep)q(orting)
1391 h(a)f(bug)h(in)g(Mak)o(e\014le.in)g(and)g(suggesting)g(sev)o(eral)0
1392 968 y(enhancemen)o(ts)e(for)e(so)q(c)o(kbuf)i(class.)62 1105
1393 y(Dierk)g(W)l(endt)f Fo(<)p Fn(w)o(endt)p Fo(@)p Fn(lam)o(b)q(da.hella.de)p
1394 Fo(>)i Fn(for)d(rep)q(orting)i(errors)e(in)i(the)f(so)q(c)o(k)o(et)p
1395 Fo(++)g Fn(do)q(cumen)o(tation.)62 1242 y(P)o(er)g(Bothner)h
1396 Fo(<)p Fn(b)q(othner)p Fo(@)p Fn(cygn)o(us.com)p Fo(>)f Fn(for)f
1397 (con\014gure,)i(con\014g.sub,)f(con\014g.shared)g(and)h(mo)o(v)o(e-if-c)o
1398 (hange)0 1304 y(\014les)h(that)d(are)i(used)g(to)f(generate)g(Mak)o(e\014le.)
1399 21 b(These)16 b(\014les)h(are)e(tak)o(en)g(from)g(his)h(libg)p
1400 Fo(++)p Fn(-2.4)g(and)f(hence,)i(these)0 1366 y(\014les)f(are)f(go)o(v)o
1401 (erned)g(b)o(y)g(the)g(Cop)o(yrigh)o(t)g(Notice)g(found)h(in)g(the)f(\014le)i
1402 (LICENCE)e(in)h(libg)p Fo(++)p Fn(.)p eop
1403 %%Page: 3 5
1404 bop 0 -58 a Fn(Chapter)15 b(1:)k(Ov)o(erview)d(of)f(So)q(c)o(k)o(et)p
1405 Fo(++)g Fn(Library)1102 b(3)0 183 y Fk(1)41 b(Ov)n(erview)13
1406 b(of)i(So)r(c)n(k)n(et)p Fj(++)f Fk(Library)62 370 y Fn(So)q(c)o(k)o(et)p
1407 Fo(++)h Fn(library)h(de\014nes)g(a)f(family)h(of)f(C)p Fo(++)f
1408 Fn(classes)i(that)f(can)g(b)q(e)h(used)g(more)e(e\013ectiv)o(ely)j(than)e
1409 (directly)0 432 y(calling)h(the)e(underlying)j(lo)o(w-lev)o(el)e(system)f
1410 (functions.)20 b(One)c(distinct)f(adv)m(an)o(tage)f(of)g(the)g(so)q(c)o(k)o
1411 (et)p Fo(++)f Fn(is)i(that)f(it)0 495 y(has)f(the)g(same)f(in)o(terface)i(as)
1412 e(that)g(of)h(the)g(iostream)f(so)h(that)f(the)h(users)g(can)g(p)q(erform)g
1413 (t)o(yp)q(e-safe)g(input)h(output.)0 557 y(See)i(y)o(our)e(lo)q(cal)j
1414 (IOStream)e(library)h(do)q(cumen)o(tation)g(for)e(more)h(information)h(on)f
1415 (iostreams.)62 694 y Fo(streambuf)f Fn(coun)o(terpart)h(of)f(the)i(so)q(c)o
1416 (k)o(et)p Fo(++)e Fn(is)i Fo(sockbuf)p Fn(.)i Fo(sockbuf)d
1417 Fn(is)g(an)g(endp)q(oin)o(t)i(for)d(comm)o(unication)0 756
1418 y(with)k(y)o(et)f(another)g Fo(sockbuf)g Fn(or)g(simply)i(a)e
1419 Fo(socket)g Fn(descriptor.)28 b Fo(sockbuf)16 b Fn(has)i(also)f(metho)q(ds)h
1420 (that)f(act)g(as)0 818 y(in)o(terfaces)d(for)f(most)g(of)h(the)g(commonly)g
1421 (used)h(system)e(calls)i(that)e(in)o(v)o(olv)o(e)i(so)q(c)o(k)o(ets.)j(See)d
1422 (Chapter)f(2)f([so)q(c)o(kbuf)0 881 y(Class],)h(page)i(4,)e(for)h(more)f
1423 (information)i(on)f(the)g(so)q(c)o(k)o(et)g(bu\013er)g(class.)62
1424 1018 y(F)l(or)f(eac)o(h)h(comm)o(unication)g(domain,)g(w)o(e)f(deriv)o(e)i(a)
1425 e(new)h(class)g(from)e Fo(sockbuf)h Fn(that)g(has)g(some)h(additional)0
1426 1080 y(metho)q(ds)h(that)f(are)h(sp)q(eci\014c)i(to)d(that)g(domain.)23
1427 b(A)o(t)15 b(presen)o(t,)h(only)g Fi(unix)k Fn(and)c Fi(inet)i
1428 Fn(domains)e(are)g(supp)q(orted.)0 1142 y Fo(sockunixbuf)d
1429 Fn(class)h(and)h Fo(sockinetbuf)e Fn(class)h(de\014ne)i(the)e
1430 Fi(unix)19 b Fn(and)14 b Fi(inet)i Fn(domain)f(of)f(so)q(c)o(k)o(ets)f(resp)q
1431 (ectiv)o(ely)l(.)0 1204 y(See)h(Chapter)f(6)g([so)q(c)o(kunixbuf)h(Class],)f
1432 (page)g(21,)f(for)h Fi(unix)k Fn(so)q(c)o(k)o(ets)c(and)g(See)h(Chapter)f(4)g
1433 ([so)q(c)o(kinetbuf)h(Class],)0 1267 y(page)h(14,)f(for)h Fi(inet)i
1434 Fn(so)q(c)o(k)o(ets.)62 1404 y(W)l(e)e(also)g(ha)o(v)o(e)g(domain)g(sp)q
1435 (eci\014c)i(so)q(c)o(k)o(et)e(address)g(classes)g(that)f(are)h(deriv)o(ed)h
1436 (from)e(a)h(common)g(base)g(class)0 1466 y(called)g Fo(sockAddr)p
1437 Fn(.)j Fo(sockunixaddr)11 b Fn(class)j(is)g(used)g(for)e Fi(unix)18
1438 b Fn(domain)13 b(addresses)h(and)f Fo(sockinetaddr)f Fn(class)h(is)0
1439 1528 y(used)j(for)f Fi(inet)i Fn(domain)f(addresses.)21 b(F)l(or)15
1440 b(more)g(information)h(on)f(address)h(classes)g(see)g(Chapter)f(3)g([so)q(c)o
1441 (kAddr)0 1590 y(Class],)22 b(page)f(13,)h(Chapter)f(7)g([so)q(c)o(kunixaddr)h
1442 (Class],)g(page)f(25,)h(and)f(Chapter)g(5)g([so)q(c)o(kinetaddr)h(Class],)0
1443 1653 y(page)15 b(19.)120 1790 y Fi(Note)s Fn(:)i Fo(sockAddr)9
1444 b Fn(is)j(not)e(sp)q(elled)j Fo(sockaddr)d Fn(in)h(order)g(to)f(prev)o(en)o
1445 (t)h(name)f(clash)i(with)f(the)g Fo(struct)120 1840 y(sockaddr)j
1446 Fn(declared)i(in)h(`)p Fo(<sys/socket.h>)p Fn('.)62 2051 y(W)l(e)k(noted)f
1447 (earlier)i(that)d(so)q(c)o(k)o(et)p Fo(++)h Fn(pro)o(vides)h(the)f(same)g(in)
1448 o(terface)h(as)f(the)g(iostream)g(library)l(.)37 b(F)l(or)20
1449 b(ex-)0 2114 y(ample,)e(in)f(the)g(in)o(ternet)h(domain,)f(w)o(e)g(ha)o(v)o
1450 (e)f Fo(isockinet)p Fn(,)g Fo(osockinet)p Fn(,)g(and)h Fo(iosockinet)f
1451 Fn(classes)h(that)f(are)0 2176 y(coun)o(terparts)e(to)g Fo(istream)p
1452 Fn(,)f Fo(ostream)p Fn(,)g(and)i Fo(iostream)e Fn(classes)i(of)f(IOStream)h
1453 (library)l(.)21 b(F)l(or)13 b(more)i(details)g(on)0 2238 y
1454 Fo(iosockstream)f Fn(classes)h(see)h(See)g(Chapter)e(8)h([so)q(c)o(kstream)f
1455 (Classes],)h(page)g(26.)62 2375 y(The)c(services)g(of)e Fo(pipe\(\))p
1456 Fn(,)h Fo(socketpair\(\))p Fn(,)f(and)i Fo(popen\(\))e Fn(system)h(calls)h
1457 (are)f(pro)o(vided)h(b)o(y)f(the)g Fo(pipestream)0 2437 y Fn(class.)20
1458 b(See)c(Chapter)f(9)g([pip)q(estream)g(Classes],)g(page)g(33.)p
1459 eop
1460 %%Page: 4 6
1461 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1462 b(4)0 183 y Fk(2)41 b Fj(sockbuf)14 b Fk(Class)62 383 y Fo(sockbuf)h
1463 Fn(class)g(is)h(deriv)o(ed)h(from)d Fo(streambuf)h Fn(class)g(of)g(the)h
1464 (iostream)f(library)l(.)21 b(Y)l(ou)16 b(can)g(sim)o(ultaneously)0
1465 445 y(read)d(and)h(write)g(in)o(to)f(a)g Fo(sockbuf)f Fn(just)i(lik)o(e)g(y)o
1466 (ou)f(can)h(listen)h(and)e(talk)h(through)f(a)g(telephone.)20
1467 b(T)l(o)14 b(accomplish)0 508 y(the)h(ab)q(o)o(v)o(e)g(goal,)g(w)o(e)g(main)o
1468 (tain)g(t)o(w)o(o)f(indep)q(enden)o(t)k(bu\013ers)d(for)f(reading)i(and)f
1469 (writing.)0 755 y Fm(2.1)33 b(Constructors)62 895 y Fo(sockbuf)13
1470 b Fn(constructors)g(sets)h(up)g(an)g(endp)q(oin)o(t)h(for)e(comm)o
1471 (unication.)20 b(A)14 b Fo(sockbuf)f Fn(ob)s(ject)g(so)h(created)g(can)0
1472 957 y(b)q(e)19 b(read)e(from)h(and)g(written)g(to)f(in)i(linebu\013ered)h(mo)
1473 q(de.)28 b(T)l(o)18 b(c)o(hange)g(mo)q(de,)g(refer)g(to)f Fo(streambuf)g
1474 Fn(class)h(in)0 1020 y(y)o(our)d(IOStream)g(library)l(.)120
1475 1159 y Fi(Note)s Fn(:)20 b(If)c(y)o(ou)f(are)g(using)h(A)l(T&T)g(IOStream)g
1476 (library)l(,)g(then)g(the)g(linebu\013ered)i(mo)q(de)e(is)g(p)q(erma-)120
1477 1209 y(nen)o(tly)g(turned)h(o\013.)k(Th)o(us,)15 b(y)o(ou)h(need)g(to)f
1478 (explicitly)k(\015ush)d(a)g(so)q(c)o(k)o(et)f(stream.)21 b(Y)l(ou)16
1479 b(can)g(\015ush)g(a)120 1259 y(so)q(c)o(k)o(et)f(stream)f(bu\013er)h(in)h
1480 (one)g(of)e(the)i(follo)o(wing)f(four)g(w)o(a)o(ys:)335 1386
1481 y Fo(//)24 b(os)g(is)f(a)h(socket)f(ostream)335 1436 y(os)h(<<)g("this)f(is)g
1482 (a)h(test")f(<<)h(endl;)335 1486 y(os)g(<<)g("this)f(is)g(a)h(test\\n")f(<<)h
1483 (flush;)335 1535 y(os)g(<<)g("this)f(is)g(a)h(test\\n";)f(os.flush)g(\(\);)
1484 335 1585 y(os)h(<<)g("this)f(is)g(a)h(test\\n";)f(os->sync)g(\(\);)62
1485 1802 y(sockbuf)14 b Fn(ob)s(jects)h(are)g(created)g(as)g(follo)o(ws)g(where)
1486 25 1942 y Fl(\000)30 b Fo(s)15 b Fn(and)g Fo(so)g Fn(are)g
1487 Fo(sockbuf)f Fn(ob)s(jects)25 2019 y Fl(\000)30 b Fo(sd)15
1488 b Fn(is)h(an)f(in)o(teger)g(whic)o(h)h(is)g(a)f(so)q(c)o(k)o(et)f(descriptor)
1489 25 2096 y Fl(\000)30 b Fo(af)15 b Fn(and)g Fo(proto)g Fn(are)g(in)o(tegers)g
1490 (whic)o(h)h(denote)f(domain)h(n)o(um)o(b)q(er)g(and)f(proto)q(col)g(n)o(um)o
1491 (b)q(er)h(resp)q(ectiv)o(ely)25 2174 y Fl(\000)30 b Fo(ty)17
1492 b Fn(is)g(a)g Fo(sockbuf::type)e Fn(and)j(m)o(ust)e(b)q(e)i(one)f(of)g
1493 Fo(sockbuf::sock_stream)p Fn(,)d Fo(sockbuf::sock_dgram)p Fn(,)90
1494 2236 y Fo(sockbuf::sock_raw)p Fn(,)e Fo(sockbuf::sock_rdm)p
1495 Fn(,)h(and)i Fo(sockbuf::sock_seqpacket)0 2376 y(sockbuf)f(s\(sd\);)0
1496 2438 y(sockbuf)g(s;)240 2515 y Fn(Set)h(so)q(c)o(k)o(et)g(descriptor)h(of)e
1497 Fo(s)h Fn(to)g Fo(sd)g Fn(\(defaults)g(to)g(-1\).)k Fo(sockbuf)14
1498 b Fn(destructor)h(will)i(close)f Fo(sd)p Fn(.)0 2593 y Fo(sockbuf)e(s\(af,)h
1499 (ty,)f(proto\);)240 2670 y Fn(Set)h(so)q(c)o(k)o(et)g(descriptor)h(of)e
1500 Fo(s)h Fn(to)g Fo(::socket\(af,)e(int\(ty\),)h(proto\);)p eop
1501 %%Page: 5 7
1502 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1503 b(5)0 183 y Fo(sockbuf)14 b(so\(s\);)240 259 y Fn(Set)h(so)q(c)o(k)o(et)g
1504 (descriptor)h(of)e Fo(so)h Fn(to)g(the)g(so)q(c)o(k)o(et)g(descriptor)g(of)g
1505 Fo(s)p Fn(.)0 334 y Fo(s.open\(ty,)f(proto\))240 409 y Fn(do)q(es)i(nothing)f
1506 (and)h(returns)f(simply)h Fo(0)p Fn(,)f(the)g(n)o(ull)i(p)q(oin)o(ter)e(to)g
1507 Fo(sockbuf)p Fn(.)0 485 y Fo(s.is_open\(\))240 560 y Fn(returns)g(a)g
1508 (non-zero)g(n)o(um)o(b)q(er)h(if)g(the)f(so)q(c)o(k)o(et)g(descriptor)g(is)h
1509 (op)q(en)g(else)g(return)f(0.)0 635 y Fo(s)g(=)g(so;)90 b Fn(return)15
1510 b(a)g(reference)h Fo(s)f Fn(after)f(assigning)i Fo(s)f Fn(with)h
1511 Fo(so)p Fn(.)0 865 y Fm(2.2)33 b(Destructor)62 1002 y Fo
1512 (sockbuf::~sockbuf\(\))14 b Fn(\015ushes)j(output)f(and)g(closes)h(its)f(so)q
1513 (c)o(k)o(et)g(if)g(no)h(other)e(so)q(c)o(kbuf)i(is)f(referencing)i(it)0
1514 1065 y(and)p 91 1065 14 2 v 32 w(S)p 133 1065 V 16 w(DELETE)p
1515 338 1065 V 16 w(DONT)p 491 1065 V 17 w(CLOSE)e(\015ag)f(is)g(not)g(set.)20
1516 b(It)15 b(also)g(deletes)h(its)g(read)f(and)g(write)h(bu\013ers.)62
1517 1202 y(In)g(what)f(follo)o(ws,)25 1340 y Fl(\000)30 b Fo(s)15
1518 b Fn(is)h(a)f Fo(sockbuf)f Fn(ob)s(ject)25 1415 y Fl(\000)30
1519 b Fo(how)10 b Fn(is)g(of)g(t)o(yp)q(e)g Fo(sockbuf::shuthow)e
1520 Fn(and)j(m)o(ust)e(b)q(e)i(one)f(of)g Fo(sockbuf::shut_read)p
1521 Fn(,)e Fo(sockbuf::shut_write)p Fn(,)90 1477 y(and)15 b Fo
1522 (sockbuf::shut_readwrite)0 1615 y(sockbuf::~sockbuf\(\))240
1523 1690 y Fn(\015ushes)i(output)f(and)g(closes)g(its)h(so)q(c)o(k)o(et)e(if)i
1524 (no)f(other)f Fo(sockbuf)g Fn(ob)s(ject)h(is)g(referencing)h(it)g(b)q(efore)
1525 240 1753 y(deleting)f(its)f(read)f(and)h(write)f(bu\013ers.)20
1526 b(If)14 b(the)p 1068 1753 V 31 w(S)p 1109 1753 V 17 w(DELETE)p
1527 1315 1753 V 16 w(DONT)p 1468 1753 V 16 w(CLOSE)i(\015ag)e(is)h(set,)f(then)
1528 240 1815 y(the)h(so)q(c)o(k)o(et)g(is)h(not)e(closed.)0 1890
1529 y Fo(s.close\(\))240 1965 y Fn(closes)d(the)f(so)q(c)o(k)o(et)g(ev)o(en)g(if)
1530 h(it)f(is)h(referenced)g(b)o(y)f(other)g Fo(sockbuf)f Fn(ob)s(jects)g(and)p
1531 1579 1965 V 27 w(S)p 1621 1965 V 17 w(DELETE)p 1827 1965 V
1532 16 w(DONT)p 1980 1965 V 16 w(CLOSE)240 2028 y(\015ag)15 b(is)h(set.)0
1533 2103 y Fo(s.shutdown\(how\))240 2178 y Fn(sh)o(uts)10 b(do)o(wn)g(read)g(if)g
1534 Fo(how)g Fn(is)h Fo(sockbuf::shut_read)p Fn(,)d(sh)o(uts)i(do)o(wn)g(write)g
1535 (if)h Fo(how)e Fn(is)i Fo(sockbuf::shut_write)p Fn(,)240 2241
1536 y(and)k(sh)o(uts)g(do)o(wn)g(b)q(oth)h(read)f(and)g(write)g(if)h
1537 Fo(how)f Fn(is)h Fo(sockbuf::shut_readwrite)o Fn(.)0 2470 y
1538 Fm(2.3)33 b(Reading)15 b(and)h(W)-6 b(riting)62 2608 y Fo(sockbuf)17
1539 b Fn(class)g(o\013ers)g(sev)o(eral)g(w)o(a)o(ys)g(to)f(read)i(and)f(write)h
1540 (and)f(tailors)h(the)f(b)q(eha)o(vior)h(of)f(sev)o(eral)g(virtual)0
1541 2670 y(functions)f(of)f Fo(streambuf)f Fn(for)g(so)q(c)o(k)o(et)h(comm)o
1542 (unication.)p eop
1543 %%Page: 6 8
1544 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1545 b(6)62 183 y(In)16 b(case)f(of)g(error,)f Fo(sockbuf::error\(const)f(char*\))
1546 h Fn(is)i(called.)62 321 y(In)g(what)f(follo)o(ws,)25 459 y
1547 Fl(\000)30 b Fo(s)15 b Fn(is)h(a)f Fo(sockbuf)f Fn(ob)s(ject)25
1548 535 y Fl(\000)30 b Fo(buf)15 b Fn(is)g(bu\013er)h(of)e(t)o(yp)q(e)i
1549 Fo(char*)25 610 y Fl(\000)30 b Fo(bufsz)14 b Fn(is)i(an)f(in)o(teger)h(and)f
1550 (is)h(less)g(than)f Fo(sizeof\(buf\))25 686 y Fl(\000)30 b
1551 Fo(msgf)15 b Fn(is)g(an)g(in)o(teger)h(and)f(denotes)h(the)f(message)g
1552 (\015ag)25 762 y Fl(\000)30 b Fo(sa)15 b Fn(is)h(of)e(t)o(yp)q(e)i
1553 Fo(sockAddr)25 837 y Fl(\000)30 b Fo(msgh)15 b Fn(is)g(a)g(p)q(oin)o(ter)h
1554 (to)e Fo(struct)h(msghdr)25 913 y Fl(\000)30 b Fo(wp)15 b Fn(is)h(an)f(in)o
1555 (teger)g(and)g(denotes)h(time)f(in)h(seconds)25 988 y Fl(\000)30
1556 b Fo(c)15 b Fn(is)h(a)f(c)o(har)0 1126 y Fo(s.is_open\(\))240
1557 1202 y Fn(returns)g(a)g(non-zero)g(n)o(um)o(b)q(er)h(if)g(the)f(so)q(c)o(k)o
1558 (et)g(descriptor)g(is)h(op)q(en)g(else)g(return)f(0.)0 1278
1559 y Fo(s.is_eof\(\))240 1353 y Fn(returns)g(a)g(non-zero)g(n)o(um)o(b)q(er)h
1560 (if)g(the)f(so)q(c)o(k)o(et)g(has)g(seen)g(EOF)g(while)i(reading)f(else)g
1561 (return)f(0.)0 1429 y Fo(s.write\(buf,)f(bufsz\))240 1505 y
1562 Fn(returns)20 b(an)f(in)o(t)i(whic)o(h)f(m)o(ust)f(b)q(e)i(equal)f(to)g
1563 Fo(bufsz)f Fn(if)h Fo(bufsz)f Fn(c)o(hars)h(in)g(the)g Fo(buf)f
1564 Fn(are)h(written)240 1567 y(successfully)l(.)37 b(It)20 b(returns)g(0)g(if)h
1565 (there)f(is)h(nothing)g(to)e(write)i(or)e(if,)j(in)f(case)f(of)g(timeouts,)h
1566 (the)240 1629 y(so)q(c)o(k)o(et)15 b(is)g(not)g(ready)g(for)g(write)g
1567 (Section)h(2.6)e([Timeouts],)h(page)g(11.)0 1705 y Fo(s.send\(buf,)f(bufsz,)g
1568 (msgf\))240 1780 y Fn(same)20 b(as)g Fo(sockbuf::write)f Fn(describ)q(ed)k
1569 (ab)q(o)o(v)o(e)d(but)g(allo)o(ws)h(the)g(user)g(to)f(con)o(trol)g(the)g
1570 (trans-)240 1843 y(mission)f(of)f(messages)g(using)h(the)g(message)f(\015ag)g
1571 Fo(msgf)p Fn(.)29 b(If)19 b Fo(msgf)f Fn(is)h Fo(sockbuf::msg_oob)d
1572 Fn(and)240 1905 y(the)k(so)q(c)o(k)o(et)f(t)o(yp)q(e)g(of)g
1573 Fo(s)h Fn(is)g Fo(sockbuf::sock_stream)p Fn(,)d Fo(s)j Fn(sends)g(the)f
1574 (message)h(in)g Fi(out-of-band)240 1967 y Fn(mo)q(de.)38 b(If)22
1575 b Fo(msgf)f Fn(is)h Fo(sockbuf::msg_dontroute)p Fn(,)d Fo(s)i
1576 Fn(sends)h(the)f(outgoing)g(pac)o(k)o(ets)g(without)240 2029
1577 y(routing.)29 b(If)18 b Fo(msgf)g Fn(is)g(0,)g(whic)o(h)h(is)g(the)f(default)
1578 h(case,)g Fo(sockbuf::send)d Fn(b)q(eha)o(v)o(es)i(exactly)h(lik)o(e)240
1579 2092 y Fo(sockbuf::write)p Fn(.)0 2167 y Fo(s.sendto\(sa,)14
1580 b(buf,)g(bufsz,)g(msgf\))240 2243 y Fn(same)f(as)h Fo(sockbuf::send)d
1581 Fn(but)j(w)o(orks)f(on)g(unconnected)i(so)q(c)o(k)o(ets.)k
1582 Fo(sa)13 b Fn(sp)q(eci\014es)j(the)e Fi(to)h Fn(address)240
1583 2305 y(for)g(the)g(message.)0 2381 y Fo(s.sendmsg\(msgh,)e(msgf\))240
1584 2456 y Fn(same)i(as)g Fo(sockbuf::send)e Fn(but)i(sends)h(a)f
1585 Fo(struct)f(msghdr)h Fn(ob)s(ject)f(instead.)0 2532 y Fo(s.sys_write\(buf,)f
1586 (bufsz\))240 2608 y Fn(calls)e Fo(sockbuf::write)d Fn(and)j(returns)f(the)g
1587 (result.)19 b(Unlik)o(e)11 b Fo(sockbuf::write)d(sockbuf::sys_write)240
1588 2670 y Fn(is)16 b(declared)g(as)f(a)g(virtual)h(function.)p
1589 eop
1590 %%Page: 7 9
1591 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1592 b(7)0 183 y Fo(s.read\(buf,)14 b(bufsz\))240 258 y Fn(returns)h(an)g(in)o(t)h
1593 (whic)o(h)g(is)g(the)g(n)o(um)o(b)q(er)f(of)g(c)o(hars)g(read)g(in)o(to)h
1594 (the)f Fo(buf)p Fn(.)20 b(In)c(case)f(of)g(EOF,)g(return)240
1595 320 y(EOF.)c(Here,)h Fo(bufsz)f Fn(indicates)i(the)e(size)i(of)e(the)g
1596 Fo(buf)p Fn(.)19 b(In)12 b(case)f(of)g(timeouts,)h(return)f(0)h(Section)g
1597 (2.6)240 382 y([Timeouts],)i(page)h(11.)0 457 y Fo(s.recv\(buf,)f(bufsz,)g
1598 (msgf\))240 531 y Fn(same)20 b(as)g Fo(sockbuf::read)e Fn(describ)q(ed)23
1599 b(ab)q(o)o(v)o(e)c(but)i(allo)o(ws)f(the)h(user)f(to)g(receiv)o(e)h
1600 Fi(out-of-band)240 594 y Fn(data)14 b(if)h Fo(msgf)f Fn(is)h
1601 Fo(sockbuf::msg_oob)d Fn(or)i(to)g(preview)h(the)g(data)f(w)o(aiting)g(to)g
1602 (b)q(e)h(read)g(if)g Fo(msgf)e Fn(is)240 656 y Fo(sockbuf::msg_peek)p
1603 Fn(.)23 b(If)17 b Fo(msgf)f Fn(is)i(0,)f(whic)o(h)g(is)h(the)f(default)h
1604 (case,)f Fo(sockbuf::recv)e Fn(b)q(eha)o(v)o(es)240 718 y(exactly)h(lik)o(e)g
1605 Fo(sockbuf::read)p Fn(.)0 793 y Fo(s.recvfrom\(sa,)d(buf,)i(bufsz,)f(msgf\))
1606 240 867 y Fn(same)22 b(as)g Fo(sockbuf::recv)f Fn(but)i(w)o(orks)e(on)i
1607 (unconnected)g(so)q(c)o(k)o(ets.)42 b Fo(sa)22 b Fn(sp)q(eci\014es)i(the)f
1608 Fi(from)240 929 y Fn(address)15 b(for)g(the)g(message.)0 1004
1609 y Fo(s.recvmsg\(msgh,)e(msgf\))240 1078 y Fn(same)i(as)g Fo(sockbuf::recv)e
1610 Fn(but)i(reads)g(a)g Fo(struct)g(msghdr)f Fn(ob)s(ject)h(instead.)0
1611 1153 y Fo(s.sys_read\(buf,)e(bufsz\))240 1227 y Fn(calls)e
1612 Fo(sockbuf::read)e Fn(and)h(returns)g(the)g(result.)19 b(Unlik)o(e)11
1613 b Fo(sockbuf::read)e(sockbuf::sys_read)240 1290 y Fn(is)16
1614 b(declared)g(as)f(a)g(virtual)h(function.)0 1364 y Fo
1615 (s.is_readready\(wp_sec,)c(wp_usec\))240 1439 y Fn(returns)g(a)f(non-zero)i
1616 (in)o(t)f(if)g Fo(s)g Fn(has)g(data)f(w)o(aiting)h(to)g(b)q(e)g(read)g(from)f
1617 (the)h(comm)o(unication)h(c)o(hannel.)240 1501 y(If)h Fo(wp_sec)g(>=)h(0)p
1618 Fn(,)e(it)g(w)o(aits)g(for)g Fo(wp_sec)h(10^6)h(+)g(wp_usec)d
1619 Fn(microseconds)i(b)q(efore)f(returning)h(0)f(in)240 1563 y(case)j(there)h
1620 (are)f(no)h(data)e(w)o(aiting)i(to)f(b)q(e)h(read.)24 b(If)16
1621 b Fo(wp_sec)f(<)g(0)p Fn(,)h(then)h(it)g(w)o(aits)e(un)o(til)j(a)e(datum)240
1622 1625 y(arriv)o(es)f(at)g(the)g(comm)o(unication)h(c)o(hannel.)21
1623 b Fo(wp_usec)14 b Fn(defaults)i(to)e(0.)360 1700 y Fi(Please)19
1624 b(Note)s Fn(:)25 b(The)18 b(data)f(w)o(aiting)i(in)f Fo(sockbuf)p
1625 Fn('s)f(o)o(wn)h(bu\013er)g(is)g(di\013eren)o(t)h(from)360
1626 1750 y(the)c(data)g(w)o(aiting)g(in)h(the)f(comm)o(unication)h(c)o(hannel.)0
1627 1824 y Fo(s.is_writeready\(wp_sec,)c(wp_usec\))240 1899 y Fn(returns)19
1628 b(a)h(non-zero)f(in)o(t)h(if)g(data)f(can)h(b)q(e)g(written)f(on)o(to)g(the)g
1629 (comm)o(unication)i(c)o(hannel)f(of)g Fo(s)p Fn(.)240 1961
1630 y(If)f Fo(wp_sec)14 b(>=)h(0)p Fn(,)20 b(it)f(w)o(aits)f(for)g
1631 Fo(wp_sec)d(10^6)f(+)h(wp_usec)j Fn(microseconds)i(b)q(efore)f(returning)g(0)
1632 240 2023 y(in)e(case)g(no)g(data)f(can)g(b)q(e)i(written.)24
1633 b(If)17 b Fo(wp_sec)d(<)h(0)p Fn(,)i(then)g(it)g(w)o(aits)f(un)o(til)i(the)e
1634 (comm)o(unication)240 2086 y(c)o(hannel)g(is)g(ready)f(to)g(accept)g(data.)k
1635 Fo(wp_usec)c Fn(defaults)g(to)g(0.)360 2160 y Fi(Please)f(Note)s
1636 Fn(:)k(The)c(bu\013er)g(of)f(the)h Fo(sockbuf)e Fn(class)i(is)g(di\013eren)o
1637 (t)g(from)f(the)h(bu\013er)f(of)360 2210 y(the)i(comm)o(unication)h(c)o
1638 (hannel)h(bu\013er.)0 2284 y Fo(s.is_exceptionpending\(wp_s)o(ec,)12
1639 b(wp_usec\))240 2359 y Fn(returns)19 b(non-zero)g(in)o(t)f(if)i
1640 Fo(s)e Fn(has)h(an)o(y)f(exception)i(ev)o(en)o(ts)e(p)q(ending.)32
1641 b(If)19 b Fo(wp_sec)c(>=)g(0)p Fn(,)k(it)f(w)o(aits)240 2421
1642 y(for)g Fo(wp_sec)c(10^6)h(+)g(wp_usec)j Fn(microseconds)h(b)q(efore)g
1643 (returning)h(0)e(in)i(case)e Fo(s)h Fn(do)q(es)g(not)f(ha)o(v)o(e)240
1644 2483 y(an)o(y)f(exception)h(ev)o(en)o(ts)f(p)q(ending.)27 b(If)17
1645 b Fo(wp_sec)d(<)h(0)p Fn(,)i(then)h(it)f(w)o(aits)f(un)o(til)j(an)e(exp)q
1646 (ception)h(ev)o(en)o(t)240 2546 y(o)q(ccurs.)i Fo(wp_usec)14
1647 b Fn(defaults)i(to)f(0.)360 2620 y Fi(Please)26 b(Note)s Fn(:)40
1648 b(The)26 b(exceptions)h(that)e Fo(sockbuf::is_exceptionpen)o(ding)d
1649 Fn(is)360 2670 y(lo)q(oking)16 b(for)f(are)g(di\013eren)o(t)g(from)f(the)i(C)
1650 p Fo(++)e Fn(exceptions.)p eop
1651 %%Page: 8 10
1652 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1653 b(8)0 183 y Fo(s.flush_output\(\))240 259 y Fn(\015ushes)20
1654 b(the)f(output)g(bu\013er)g(and)g(returns)g(the)g(n)o(um)o(b)q(er)g(of)g(c)o
1655 (hars)f(\015ushed.)33 b(In)19 b(case)g(of)g(error,)240 321
1656 y(return)g(EOF.)h Fo(sockbuf::flush_output)c Fn(is)k(a)f(protected)h(mem)o(b)
1657 q(er)f(function)i(and)f(it)f(is)h(not)240 384 y(a)o(v)m(ailable)d(for)d
1658 (general)i(public.)0 459 y Fo(s.doallocate\(\))240 535 y Fn(allo)q(cates)i
1659 (free)g(store)f(for)g(read)g(and)h(write)g(bu\013ers)f(of)h
1660 Fo(s)f Fn(and)h(returns)f(1)h(if)g(allo)q(cation)g(is)h(done)240
1661 598 y(and)13 b(returns)g(0)g(if)h(there)f(is)h(no)f(need.)20
1662 b Fo(sockbuf::doallocate)10 b Fn(is)k(a)f(protected)g(virtual)h(mem)o(b)q(er)
1663 240 660 y(function)i(and)f(it)h(is)g(not)e(a)o(v)m(ailable)j(for)e(general)h
1664 (public.)0 736 y Fo(s.underflow\(\))240 811 y Fn(returns)21
1665 b(the)f(unread)i(c)o(har)e(in)i(the)e(bu\013er)h(as)g(an)f(unsigned)i(c)o
1666 (har)f(if)g(there)g(is)g(an)o(y)l(.)36 b(Else)22 b(re-)240
1667 874 y(turns)e(EOF)f(if)h Fo(s)g Fn(cannot)g(allo)q(cate)g(space)g(for)f(the)h
1668 (bu\013ers,)g(cannot)g(read)g(or)f(p)q(eer)h(is)g(closed.)240
1669 936 y Fo(sockbuf::underflow)11 b Fn(is)j(a)f(protected)g(virtual)h(mem)o(b)q
1670 (er)f(function)i(and)e(it)h(is)g(not)f(a)o(v)m(ailable)i(for)240
1671 998 y(general)h(public.)0 1074 y Fo(s.overflow\(c\))240 1150
1672 y Fn(if)23 b Fo(c==EOF)p Fn(,)f(call)h(and)g(return)f(the)g(result)g(of)g
1673 Fo(flush_output\(\))p Fn(,)g(else)h(if)f Fo(c=='\\n')f Fn(and)i
1674 Fo(s)e Fn(is)240 1212 y(linebu\013ered,)c(call)g Fo(flush_output\(\))c
1675 Fn(and)j(return)g Fo(c)f Fn(unless)i Fo(flush_output\(\))c
1676 Fn(returns)i(EOF,)240 1274 y(in)g(whic)o(h)g(case)f(return)g(EOF.)f(In)i(an)o
1677 (y)e(other)h(case,)g(insert)g(c)o(har)g Fo(c)g Fn(in)o(to)g(the)g(bu\013er)g
1678 (and)g(return)g Fo(c)240 1337 y Fn(as)h(an)h(unsigned)g(c)o(har.)21
1679 b Fo(sockbuf::overflow)13 b Fn(is)j(a)f(protected)h(mem)o(b)q(er)f(virtual)h
1680 (function)h(and)240 1399 y(it)e(is)h(not)f(a)o(v)m(ailable)i(for)d(general)i
1681 (public.)360 1475 y Fi(No)q(de:)k Fn(linebu\013ered)14 b(mo)q(de)f(do)q(es)g
1682 (not)f(w)o(ork)g(with)h(A)l(T&T)g(IOStream)g(library)l(.)20
1683 b(Use)360 1525 y(explicit)d(\015ushing)g(to)d(\015ush)i Fo(sockbuf)p
1684 Fn(.)0 1600 y Fo(s.sync\(\))48 b Fn(calls)22 b Fo(flush_output\(\))d
1685 Fn(and)i(returns)f(the)h(result.)38 b(Useful)21 b(if)h(the)f(user)g(needs)g
1686 (to)f(\015ush)i(the)240 1663 y(output)15 b(without)g(writing)h(newline)h(c)o
1687 (har)e(in)o(to)g(the)g(write)h(bu\013er.)0 1739 y Fo(s.xsputn\(buf,)d
1688 (bufsz\))240 1814 y Fn(write)h Fo(bufsz)f Fn(c)o(hars)g(in)o(to)h(the)g
1689 (bu\013er)g(and)g(returns)g(the)g(n)o(um)o(b)q(er)g(of)f(c)o(hars)h
1690 (successfully)h(written.)240 1877 y(Output)h(is)f(\015ushed)i(if)e(an)o(y)g
1691 (c)o(har)g(in)h Fo(buf[0..bufsz-1])d Fn(is)j Fo('\\n')p Fn(.)0
1692 1952 y Fo(s.recvtimeout\(wp\))240 2028 y Fn(sets)f(the)g(recv)h(timeout)f(to)
1693 f Fo(wp)h Fn(seconds.)20 b(If)c Fo(wp)f Fn(is)h(-1,)e(it)i(is)f(a)g(blo)q(c)o
1694 (k)h(and)g(if)f Fo(wp)g Fn(is)h(0,)e(it)i(is)f(a)g(p)q(oll.)240
1695 2104 y(It)f(a\013ects)f(all)j(read)e(functions.)20 b(If)14
1696 b(the)g(so)q(c)o(k)o(et)g(is)h(not)e(read)h(ready)g(within)i
1697 Fo(wp)d Fn(seconds,)i(the)f(read)240 2166 y(call)j(will)g(return)f(0.)21
1698 b(It)15 b(also)h(a\013ects)f Fo(sockbuf::underflow)p Fn(.)k
1699 Fo(sockbuf::underflow)13 b Fn(will)k(not)240 2229 y(set)e(the)g
1700 Fo(_S_EOF_SEEN)f Fn(\015ag)h(if)g(it)h(is)g(returning)f(EOF)g(b)q(ecause)i
1701 (of)d(timeout.)240 2304 y Fo(sockbuf::recvtimeout)e Fn(returns)j(the)h(old)g
1702 (recv)f(timeout)g(v)m(alue.)0 2380 y Fo(s.sendtimeout\(wp\))240
1703 2456 y Fn(sets)g(the)g(send)g(timeout)g(to)g Fo(wp)f Fn(seconds.)20
1704 b(If)c Fo(wp)e Fn(is)i(-1,)e(it)i(is)f(a)g(blo)q(c)o(k)g(and)h(if)f
1705 Fo(wp)g Fn(is)g(0,)g(it)g(is)g(a)g(p)q(oll.)240 2532 y(It)j(a\013ects)g(all)h
1706 (write)g(functions.)30 b(If)18 b(the)h(so)q(c)o(k)o(et)f(is)g(not)g(write)h
1707 (ready)f(within)i Fo(wp)e Fn(seconds,)h(the)240 2594 y(write)c(call)i(will)f
1708 (return)g(0.)240 2670 y Fo(sockbuf::sendtimeout)c Fn(returns)j(the)h(old)g
1709 (send)f(timeout)h(v)m(alue.)p eop
1710 %%Page: 9 11
1711 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1408
1712 b(9)0 183 y Fm(2.4)33 b(Establishing)16 b(connections)62 320
1713 y Fn(A)11 b(name)g(m)o(ust)g(b)q(e)g(b)q(ound)h(to)f(a)f Fo(sockbuf)g
1714 Fn(if)i(pro)q(cesses)f(w)o(an)o(t)f(to)g(refer)h(to)f(it)i(and)f(use)g(it)g
1715 (for)g(comm)o(unication.)0 382 y(Names)i(m)o(ust)g(b)q(e)i(unique.)20
1716 b(A)14 b Fi(unix)k Fn(name)13 b(is)h(a)g(3-tuple,)g Fo(<)p
1717 Fi(proto)q(col,)f(lo)q(cal)i(path,)f(p)q(eer)g(path)p Fo(>)p
1718 Fn(.)19 b(An)14 b Fi(inet)h Fn(name)0 445 y(is)k(a)g(5-tuple,)h
1719 Fo(<)p Fi(proto)q(col,)f(lo)q(cal)g(addr,)h(lo)q(cal)f(p)q(ort,)g(p)q(eer)h
1720 (addr,)f(p)q(eer)g(p)q(ort)p Fo(>)p Fn(.)30 b Fo(sockbuf::bind)17
1721 b Fn(is)i(used)h(to)0 507 y(sp)q(ecify)h(the)g(lo)q(cal)g(half)f(of)g(the)g
1722 (name|)p Fo(<)p Fi(lo)q(cal)i(path)p Fo(>)d Fn(for)h Fi(unix)k
1723 Fn(and)c Fo(<)p Fi(lo)q(cal)h(addr,)g(lo)q(cal)h(p)q(ort)p
1724 Fo(>)d Fn(for)h Fi(inet)p Fn(.)0 569 y Fo(sockbuf::connect)d
1725 Fn(and)i Fo(sockbuf::accept)e Fn(are)i(used)h(to)f(sp)q(ecify)h(the)f(p)q
1726 (eer)h(half)g(of)f(the)g(name|)p Fo(<)p Fi(p)q(eer)0 632 y(path)p
1727 Fo(>)c Fn(for)f Fi(unix)20 b Fn(and)15 b Fo(<)p Fi(p)q(eer)h(addr,)f(p)q(eer)
1728 h(p)q(ort)p Fo(>)e Fn(for)h Fi(inet)p Fn(.)62 769 y(In)h(what)f(follo)o(ws,)
1729 25 906 y Fl(\000)30 b Fo(s)15 b Fn(and)g Fo(so)g Fn(are)g Fo(sockbuf)f
1730 Fn(ob)s(jects)25 978 y Fl(\000)30 b Fo(sa)15 b Fn(is)h(a)e
1731 Fo(sockAddr)h Fn(ob)s(ject)25 1051 y Fl(\000)30 b Fo(nc)15
1732 b Fn(is)h(an)f(in)o(teger)g(denoting)h(the)f(n)o(um)o(b)q(er)h(of)f
1733 (connections)h(to)e(allo)o(w)0 1188 y Fo(s.bind\(sa\))240 1260
1734 y Fn(binds)i Fo(sockAddr)f(sa)f Fn(as)h(the)g(lo)q(cal)i(half)e(of)g(the)h
1735 (name)f(for)f Fo(s)p Fn(.)0 1333 y Fo(s.connect\(sa\))240 1405
1736 y(sockbuf::connect)e Fn(uses)j Fo(sa)g Fn(to)f(pro)o(vide)h(the)g(p)q(eer)g
1737 (half)g(of)g(the)g(name)f(for)g Fo(s)h Fn(and)g(to)f(establish)240
1738 1467 y(the)23 b(connection)h(itself.)43 b Fo(sockbuf::connect)20
1739 b Fn(also)j(pro)o(vides)g(the)g(lo)q(cal)h(half)f(of)f(the)h(name)240
1740 1530 y(automatically)d(and)g(hence,)i(the)d(user)h(should)h(not)e(use)h
1741 Fo(sockbuf::bind)e Fn(to)h(bind)i(an)o(y)f(lo)q(cal)240 1592
1742 y(half)c(of)e(the)i(name.)0 1664 y Fo(s.listen\(nc\))240 1737
1743 y Fn(mak)o(es)c Fo(s)g Fn(ready)g(to)g(accept)g(connections.)20
1744 b Fo(nc)12 b Fn(sp)q(eci\014es)j(the)d(maxim)o(um)g(n)o(um)o(b)q(er)h(of)f
1745 (outstanding)240 1799 y(connections)22 b(that)e(ma)o(y)h(b)q(e)g(queued)i
1746 (and)e(m)o(ust)f(b)q(e)i(at)e(least)i(1)e(and)i(less)f(than)g(or)g(equal)h
1747 (to)240 1861 y Fo(sockbuf::somaxconn)13 b Fn(whic)o(h)j(is)f(usually)i(5)e
1748 (on)g(most)f(systems.)0 1934 y Fo(sockbuf)g(so)h(=)g(s.accept\(sa\))0
1749 1996 y(sockbuf)f(so)h(=)g(s.accept\(\))240 2069 y Fn(accepts)e(connections)h
1750 (and)g(returns)f(the)g(p)q(eer)h(address)f(in)h Fo(sa)p Fn(.)19
1751 b Fo(s)13 b Fn(m)o(ust)g(b)q(e)g(a)g(listening)i Fo(sockbuf)p
1752 Fn(.)240 2131 y(See)h Fo(sockbuf::listen)d Fn(ab)q(o)o(v)o(e.)0
1753 2346 y Fm(2.5)33 b(Getting)15 b(and)h(Setting)g(So)r(c)n(k)n(et)f(Options)62
1754 2483 y Fn(So)q(c)o(k)o(et)k(options)g(are)f(used)h(to)g(con)o(trol)f(a)g(so)q
1755 (c)o(k)o(et)h(comm)o(unication.)31 b(New)19 b(options)g(can)g(b)q(e)g(set)f
1756 (and)h(old)0 2545 y(v)m(alue)c(of)e(the)h(options)f(can)h(b)q(e)g(retriv)o
1757 (ed)g(at)f(the)h(proto)q(col)g(lev)o(el)g(or)g(at)e(the)i(so)q(c)o(k)o(et)f
1758 (lev)o(el)i(b)o(y)f(using)g Fo(setopt)f Fn(and)0 2608 y Fo(getopt)j
1759 Fn(mem)o(b)q(er)g(functions.)25 b(In)17 b(addition,)g(y)o(ou)g(can)f(also)h
1760 (use)f(sp)q(ecial)j(mem)o(b)q(er)d(functions)i(to)d(get)i(and)f(set)0
1761 2670 y(sp)q(eci\014c)h(options.)p eop
1762 %%Page: 10 12
1763 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1386
1764 b(10)62 183 y(In)16 b(what)f(follo)o(ws,)25 323 y Fl(\000)30
1765 b Fo(s)15 b Fn(is)h(a)f Fo(sockbuf)f Fn(ob)s(ject)25 401 y
1766 Fl(\000)30 b Fo(opval)14 b Fn(is)i(an)f(in)o(teger)h(and)f(denotes)g(the)h
1767 (option)f(v)m(alue)25 479 y Fl(\000)30 b Fo(op)15 b Fn(is)h(of)e(t)o(yp)q(e)i
1768 Fo(sockbuf::option)d Fn(and)i(m)o(ust)g(b)q(e)h(one)f(of)127
1769 556 y Fl(\017)30 b Fo(sockbuf::so_error)13 b Fn(used)j(to)e(retriev)o(e)i
1770 (and)f(clear)h(error)e(status)127 634 y Fl(\017)30 b Fo(sockbuf::so_type)13
1771 b Fn(used)j(to)e(retriev)o(e)i(t)o(yp)q(e)f(of)g(the)g(so)q(c)o(k)o(et)127
1772 712 y Fl(\017)30 b Fo(sockbuf::so_debug)13 b Fn(is)j(used)f(to)g(sp)q(ecify)h
1773 (recording)g(of)f(debugging)h(information)127 789 y Fl(\017)30
1774 b Fo(sockbuf::so_reuseaddr)12 b Fn(is)k(used)g(to)e(sp)q(ecify)j(the)e(reuse)
1775 h(of)e(lo)q(cal)j(address)127 867 y Fl(\017)30 b Fo(sockbuf::so_keepalive)12
1776 b Fn(is)k(used)g(to)e(sp)q(ecify)j(whether)e(to)g(k)o(eep)g(connections)i
1777 (aliv)o(e)f(or)e(not)127 945 y Fl(\017)30 b Fo(sockbuf::so_dontroute)12
1778 b Fn(is)k(used)g(to)e(sp)q(ecify)j(whether)e(to)g(route)g(messages)f(or)h
1779 (not)127 1022 y Fl(\017)30 b Fo(sockbuf::so_broadcast)13 b
1780 Fn(is)k(used)g(to)e(sp)q(ecify)i(whether)g(to)e(broadcast)h
1781 Fo(sockbuf::sock_dgram)180 1084 y Fn(messages)f(or)f(not)127
1782 1162 y Fl(\017)30 b Fo(sockbuf::so_oobinline)12 b Fn(is)k(used)g(to)e(sp)q
1783 (ecify)j(whether)e(to)g(inline)j Fi(out-of-band)f Fn(data)d(or)h(not.)127
1784 1240 y Fl(\017)30 b Fo(sockbuf::so_linger)13 b Fn(is)i(used)h(to)f(sp)q
1785 (ecify)h(for)f(ho)o(w)g(long)g(to)g(linger)h(b)q(efore)f(sh)o(utting)h(do)o
1786 (wn)127 1317 y Fl(\017)30 b Fo(sockbuf::so_sndbuf)13 b Fn(is)i(used)h(to)f
1787 (retriev)o(e)g(and)g(to)g(set)g(the)g(size)h(of)f(the)g(send)g(bu\013er)h
1788 (\(comm)o(uni-)180 1380 y(cation)f(c)o(hannel)i(bu\013er)e(not)g
1789 Fo(sockbuf)p Fn('s)f(in)o(ternal)i(bu\013er\))127 1457 y Fl(\017)30
1790 b Fo(sockbuf::so_rcvbuf)13 b Fn(is)j(used)g(to)f(retriev)o(e)h(and)g(to)f
1791 (set)g(the)h(size)g(of)g(the)f(recv)h(bu\013er)g(\(comm)o(uni-)180
1792 1520 y(cation)f(c)o(hannel)i(bu\013er)e(not)g Fo(sockbuf)p
1793 Fn('s)f(in)o(ternal)i(bu\013er\))0 1660 y Fo(s.getopt\(op,)e(&opval,)g
1794 (sizeof\(opval\),)f(oplevel\))240 1737 y Fn(gets)f(the)h(option)g(v)m(alue)h
1795 (of)f(the)g Fo(sockbuf::option)e(op)h Fn(at)g(the)h(option)g(lev)o(el)i
1796 Fo(oplevel)c Fn(in)j Fo(opval)p Fn(.)240 1800 y(It)j(returns)f(the)h(actual)g
1797 (size)h(of)e(the)h(bu\013er)g Fo(opval)f Fn(used.)25 b(The)17
1798 b(default)g(v)m(alue)h(of)e(the)h Fo(oplevel)240 1862 y Fn(is)f
1799 Fo(sockbuf::sol_socket)p Fn(.)0 1940 y Fo(s.setopt\(op,)e(&opval,)g
1800 (sizeof\(opval\),)f(oplevel\))240 2017 y Fn(sets)g(the)g(option)g(v)m(alue)h
1801 (of)f(the)g Fo(sockbuf::option)e(op)i Fn(at)f(the)h(option)g(lev)o(el)i
1802 Fo(oplevel)d Fn(to)g Fo(opval)p Fn(.)240 2079 y(The)j(default)h(v)m(alue)h
1803 (of)d(the)i Fo(oplevel)e Fn(is)i Fo(sockbuf::sol_socket)p Fn(.)0
1804 2157 y Fo(s.gettype\(\))240 2235 y Fn(gets)f(the)g(so)q(c)o(k)o(et)g(t)o(yp)q
1805 (e)g(of)g Fo(s)p Fn(.)k(The)d(return)f(t)o(yp)q(e)g(is)h Fo(sockbuf::type)p
1806 Fn(.)0 2312 y Fo(s.clearerror\(\))240 2390 y Fn(gets)f(and)g(clears)h(the)f
1807 (error)f(status)h(of)g(the)g(so)q(c)o(k)o(et.)0 2468 y Fo(s.debug\(opval\))
1808 240 2545 y Fn(if)20 b Fo(opval)f Fn(is)h(not)f(-1,)h(set)f(the)g
1809 Fo(sockbuf::so_debug)e Fn(option)j(v)m(alue)h(to)d Fo(opval)p
1810 Fn(.)32 b(In)20 b(an)o(y)f(case,)240 2608 y(return)14 b(the)h(old)g(option)g
1811 (v)m(alue)g(of)f Fo(sockbuf::so_debug)e Fn(option.)20 b(The)15
1812 b(default)g(v)m(alue)h(of)e Fo(opval)240 2670 y Fn(is)i(-1.)p
1813 eop
1814 %%Page: 11 13
1815 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1386
1816 b(11)0 183 y Fo(s.reuseaddr\(opval\))240 255 y Fn(if)14 b Fo(opval)e
1817 Fn(is)i(not)f(-1,)g(set)f(the)i Fo(sockbuf::so_reuseaddr)c
1818 Fn(option)j(v)m(alue)i(to)d Fo(opval)p Fn(.)19 b(In)13 b(an)o(y)g(case,)240
1819 317 y(return)k(the)h(old)g(option)g(v)m(alue)h(of)e Fo(sockbuf::so_reuseaddr)
1820 e Fn(option.)27 b(The)17 b(default)i(v)m(alue)f(of)240 380
1821 y Fo(opval)c Fn(is)i(-1.)0 452 y Fo(s.dontroute\(opval\))240
1822 523 y Fn(if)e Fo(opval)e Fn(is)i(not)f(-1,)g(set)f(the)i Fo
1823 (sockbuf::so_dontroute)c Fn(option)j(v)m(alue)i(to)d Fo(opval)p
1824 Fn(.)19 b(In)13 b(an)o(y)g(case,)240 586 y(return)k(the)h(old)g(option)g(v)m
1825 (alue)h(of)e Fo(sockbuf::so_dontroute)e Fn(option.)27 b(The)17
1826 b(default)i(v)m(alue)f(of)240 648 y Fo(opval)c Fn(is)i(-1.)0
1827 720 y Fo(s.oobinline\(opval\))240 792 y Fn(if)e Fo(opval)e
1828 Fn(is)i(not)f(-1,)g(set)f(the)i Fo(sockbuf::so_oobinline)c
1829 Fn(option)j(v)m(alue)i(to)d Fo(opval)p Fn(.)19 b(In)13 b(an)o(y)g(case,)240
1830 854 y(return)k(the)h(old)g(option)g(v)m(alue)h(of)e Fo(sockbuf::so_oobinline)
1831 e Fn(option.)27 b(The)17 b(default)i(v)m(alue)f(of)240 916
1832 y Fo(opval)c Fn(is)i(-1.)0 988 y Fo(s.broadcast\(opval\))240
1833 1060 y Fn(if)e Fo(opval)e Fn(is)i(not)f(-1,)g(set)f(the)i Fo
1834 (sockbuf::so_broadcast)c Fn(option)j(v)m(alue)i(to)d Fo(opval)p
1835 Fn(.)19 b(In)13 b(an)o(y)g(case,)240 1122 y(return)k(the)h(old)g(option)g(v)m
1836 (alue)h(of)e Fo(sockbuf::so_broadcast)e Fn(option.)27 b(The)17
1837 b(default)i(v)m(alue)f(of)240 1185 y Fo(opval)c Fn(is)i(-1.)0
1838 1257 y Fo(s.keepalive\(opval\))240 1328 y Fn(if)e Fo(opval)e
1839 Fn(is)i(not)f(-1,)g(set)f(the)i Fo(sockbuf::so_keepalive)c
1840 Fn(option)j(v)m(alue)i(to)d Fo(opval)p Fn(.)19 b(In)13 b(an)o(y)g(case,)240
1841 1391 y(return)k(the)h(old)g(option)g(v)m(alue)h(of)e Fo
1842 (sockbuf::so_keepalive)e Fn(option.)27 b(The)17 b(default)i(v)m(alue)f(of)240
1843 1453 y Fo(opval)c Fn(is)i(-1.)0 1525 y Fo(s.sendbufsz\(opval\))240
1844 1597 y Fn(if)i Fo(opval)e Fn(is)i(not)f(-1,)g(set)g(the)g(new)h(send)g
1845 (bu\013er)f(size)h(to)f Fo(opval)p Fn(.)25 b(In)18 b(an)o(y)f(case,)g(return)
1846 g(the)g(old)240 1659 y(bu\013er)e(size)h(of)f(the)g(send)h(bu\013er.)k(The)15
1847 b(default)h(v)m(alue)h(of)d Fo(opval)h Fn(is)h(-1.)0 1731 y
1848 Fo(s.recvbufsz\(opval\))240 1803 y Fn(if)i Fo(opval)f Fn(is)h(not)f(-1,)h
1849 (set)f(the)h(new)f(recv)h(bu\013er)g(size)g(to)f Fo(opval)p
1850 Fn(.)26 b(In)18 b(an)o(y)g(case,)f(return)h(the)f(old)240 1865
1851 y(bu\013er)e(size)h(of)f(the)g(recv)h(bu\013er.)k(The)15 b(default)h(v)m
1852 (alue)g(of)f Fo(opval)f Fn(is)i(-1.)0 1937 y Fo(s.linger\(tim\))240
1853 2009 y Fn(if)k Fo(tim)f Fn(is)h(p)q(ositiv)o(e,)h(set)f(the)f(linger)i(time)f
1854 (to)f(tim)g(seconds.)34 b(If)19 b Fo(tim)h Fn(is)g(0,)g(set)f(the)g(linger)i
1855 (o\013.)240 2071 y(In)c(an)o(y)g(case,)f(return)h(the)g(old)g(linger)h(time)f
1856 (if)g(it)g(w)o(as)f(set)g(earlier.)25 b(Otherwise)18 b(return)f(-1.)24
1857 b(The)240 2133 y(default)16 b(v)m(alue)g(of)f Fo(tim)g Fn(is)g(-1.)0
1858 2346 y Fm(2.6)33 b(Time)15 b(Outs)g(While)i(Reading)e(and)h(W)-6
1859 b(riting)62 2483 y Fn(Time)20 b(outs)f(are)g(v)o(ery)g(useful)i(in)f
1860 (handling)h(data)e(of)g(unkno)o(wn)g(sizes)h(and)g(formats)e(while)j(reading)
1861 f(and)0 2545 y(writing.)39 b(F)l(or)20 b(example,)k(ho)o(w)d(do)q(es)g(one)h
1862 (comm)o(unicate)f(with)h(a)f(so)q(c)o(k)o(et)g(that)f(sends)i(c)o(h)o(unks)g
1863 (of)f(data)f(of)0 2608 y(unkno)o(wn)11 b(size)h(and)f(format?)18
1864 b(If)11 b(only)h Fo(sockbuf::read)d Fn(is)i(used)h(without)f(time)g(out,)g
1865 (it)g(will)i(blo)q(c)o(k)e(inde\014nitely)l(.)0 2670 y(In)16
1866 b(suc)o(h)f(cases,)g(time)h(out)e(facilit)o(y)j(is)e(the)h(only)f(answ)o(er.)
1867 p eop
1868 %%Page: 12 14
1869 bop 0 -58 a Fn(Chapter)15 b(2:)k Fo(sockbuf)c Fn(Class)1386
1870 b(12)62 183 y(The)13 b(follo)o(wing)h(idiom)g(is)g(recommended.)20
1871 b(See)13 b(Chapter)g(15)f([Pitfalls],)i(page)e(48)h(for)f(a)h(complete)g
1872 (example.)215 320 y Fo(int)24 b(old_tmo)f(=)h(s.recvtimeout)e(\(2\))h(//)h
1873 (set)f(time)g(out)h(\(2)f(seconds)g(here\))215 370 y(for)h(\(;;\))f({)h(//)g
1874 (read)f(or)g(write)311 420 y(char)g(buf[256];)311 470 y(int)g(rval)h(=)f
1875 (s.read)g(\(buf,)h(256\);)311 519 y(if)f(\(rval)h(==)f(0)h(||)g(rval)f(==)g
1876 (EOF\))h(break;)311 569 y(//)f(process)g(buf)h(here)215 619
1877 y(})215 669 y(s.recvtimeout)f(\(old_tmo\);)f(//)i(reset)f(time)g(out)62
1878 881 y Fn(In)16 b(what)f(follo)o(ws,)25 1018 y Fl(\000)30 b
1879 Fo(s)15 b Fn(is)h(a)f Fo(sockbuf)f Fn(ob)s(ject)25 1092 y Fl(\000)30
1880 b Fo(wp)15 b Fn(is)h(w)o(aiting)f(p)q(erio)q(d)h(in)h(seconds)0
1881 1229 y Fo(s.recvtimeout\(wp\))240 1304 y Fn(sets)e(the)g(recv)h(timeout)f(to)
1882 f Fo(wp)h Fn(seconds.)20 b(If)c Fo(wp)f Fn(is)h(-1,)e(it)i(is)f(a)g(blo)q(c)o
1883 (k)h(and)g(if)f Fo(wp)g Fn(is)h(0,)e(it)i(is)f(a)g(p)q(oll.)240
1884 1379 y(It)f(a\013ects)f(all)j(read)e(functions.)20 b(If)14
1885 b(the)g(so)q(c)o(k)o(et)g(is)h(not)e(read)h(ready)g(within)i
1886 Fo(wp)d Fn(seconds,)i(the)f(read)240 1441 y(call)j(will)g(return)f(0.)21
1887 b(It)15 b(also)h(a\013ects)f Fo(sockbuf::underflow)p Fn(.)k
1888 Fo(sockbuf::underflow)13 b Fn(will)k(not)240 1503 y(set)e(the)g
1889 Fo(_S_EOF_SEEN)f Fn(\015ag)h(if)g(it)h(is)g(returning)f(EOF)g(b)q(ecause)i
1890 (of)d(timeout.)240 1578 y Fo(sockbuf::recvtimeout)e Fn(returns)j(the)h(old)g
1891 (recv)f(timeout)g(v)m(alue.)0 1653 y Fo(s.sendtimeout\(wp\))240
1892 1727 y Fn(sets)g(the)g(send)g(timeout)g(to)g Fo(wp)f Fn(seconds.)20
1893 b(If)c Fo(wp)e Fn(is)i(-1,)e(it)i(is)f(a)g(blo)q(c)o(k)g(and)h(if)f
1894 Fo(wp)g Fn(is)g(0,)g(it)g(is)g(a)g(p)q(oll.)240 1802 y(It)j(a\013ects)g(all)h
1895 (write)g(functions.)30 b(If)18 b(the)h(so)q(c)o(k)o(et)f(is)g(not)g(write)h
1896 (ready)f(within)i Fo(wp)e Fn(seconds,)h(the)240 1864 y(write)c(call)i(will)f
1897 (return)g(0.)240 1939 y Fo(sockbuf::sendtimeout)c Fn(returns)j(the)h(old)g
1898 (send)f(timeout)h(v)m(alue.)p eop
1899 %%Page: 13 15
1900 bop 0 -58 a Fn(Chapter)15 b(3:)k(so)q(c)o(kAddr)d(Class)1366
1901 b(13)0 183 y Fk(3)41 b(so)r(c)n(kAddr)14 b(Class)62 370 y Fn(Class)h
1902 Fo(sockAddr)f Fn(is)i(an)f(abstract)f(base)h(class)g(for)g(all)h(so)q(c)o(k)o
1903 (et)e(address)i(classes.)k(That)14 b(is,)i(domain)f(sp)q(eci\014c)0
1904 432 y(so)q(c)o(k)o(et)g(address)g(classes)h(are)e(all)j(deriv)o(ed)f(from)e
1905 Fo(sockAddr)g Fn(class.)120 569 y Fi(Note)s Fn(:)22 b Fo(sockAddr)15
1906 b Fn(is)i(not)f(sp)q(elled)j Fo(sockaddr)c Fn(in)j(order)e(to)g(prev)o(en)o
1907 (t)g(name)h(clash)g(with)g Fo(struct)120 619 y(sockaddr)d Fn(declared)i(in)h
1908 (`)p Fo(<sys/socket.h>)p Fn('.)62 831 y(Non-abstract)e(deriv)o(ed)h(classes)g
1909 (m)o(ust)e(ha)o(v)o(e)h(de\014nitions)i(for)d(the)i(follo)o(wing)g
1910 (functions.)0 968 y Fo(sockAddr::operator)d(void*)h(\(\))240
1911 1043 y Fn(should)i(simply)h(return)e Fo(this)p Fn(.)0 1117
1912 y Fo(sockAddr::size\(\))240 1192 y Fn(should)h(return)f Fo(sizeof\(*this\))p
1913 Fn(.)j(The)e(return)f(t)o(yp)q(e)g(is)h Fo(int)p Fn(.)0 1267
1914 y Fo(sockAddr::family\(\))240 1341 y Fn(should)g(return)f(address)f(family)i
1915 (\(domain)f(name\))f(of)h(the)g(so)q(c)o(k)o(et)f(address.)20
1916 b(The)15 b(return)g(t)o(yp)q(e)f(is)240 1404 y Fo(int)p eop
1917 %%Page: 14 16
1918 bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
1919 b(14)0 183 y Fk(4)41 b(so)r(c)n(kinetbuf)13 b(Class)62 377
1920 y Fo(sockinetbuf)k Fn(class)h(is)h(deriv)o(ed)g(from)e Fo(sockbuf)g
1921 Fn(class)h(and)g(inherits)i(most)d(of)g(the)h(public)j(functions)d(of)0
1922 439 y Fo(sockbuf)p Fn(.)i(See)c(Chapter)f(2)g([so)q(c)o(kbuf)g(Class],)g
1923 (page)g(4,)g(for)g(more)g(information)g(on)h Fo(sockbuf)p Fn(.)j(In)d
1924 (addition,)h(it)0 502 y(pro)o(vides)d(metho)q(ds)h(for)e(getting)h
1925 Fo(sockinetaddr)e Fn(of)i(lo)q(cal)h(and)f(p)q(eer)h(connections.)20
1926 b(See)15 b(Chapter)f(5)f([so)q(c)o(kine-)0 564 y(taddr)i(Class],)f(page)h
1927 (19,)g(for)f(more)h(information)g(on)g Fo(sockinetaddr)p Fn(.)0
1928 801 y Fm(4.1)33 b(Metho)r(ds)62 940 y Fn(In)16 b(what)f(follo)o(ws,)25
1929 1078 y Fl(\000)30 b Fo(ty)15 b Fn(denotes)g(the)h(t)o(yp)q(e)f(of)g(the)g(so)
1930 q(c)o(k)o(et)f(connection)j(and)e(is)h(of)f(t)o(yp)q(e)g Fo(sockbuf::type)25
1931 1154 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(the)f(proto)q(col)g(and)h(is)f
1932 (of)g(t)o(yp)q(e)g(in)o(t)25 1230 y Fl(\000)30 b Fo(si,)15
1933 b(ins)f Fn(are)h Fo(sockbuf)g Fn(ob)s(jects)f(and)i(are)e(in)i
1934 Fi(inet)h Fn(domain)25 1306 y Fl(\000)30 b Fo(adr)15 b Fn(denotes)g(an)g
1935 Fi(inet)i Fn(address)e(in)h(host)f(b)o(yte)g(order)g(and)h(is)f(of)g(t)o(yp)q
1936 (e)g(unsigned)i(long)25 1383 y Fl(\000)30 b Fo(serv)15 b Fn(denotes)g(a)g
1937 (service)h(lik)o(e)g Fo(")p Fn(nn)o(tp)p Fo(")f Fn(and)h(is)f(of)g(t)o(yp)q
1938 (e)g(c)o(har*)25 1459 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(a)f(proto)q
1939 (col)g(lik)o(e)h Fo(")p Fn(tcp)p Fo(")f Fn(and)h(is)f(of)g(t)o(yp)q(e)g(c)o
1940 (har*)25 1535 y Fl(\000)30 b Fo(thostname)13 b Fn(is)i(of)e(t)o(yp)q(e)i(c)o
1941 (har*)e(and)i(denotes)f(the)g(name)h(of)e(a)h(host)g(lik)o(e)h
1942 Fo("kelvin.acc.virginia.edu")90 1597 y Fn(or)g Fo("128.143.24.31")p
1943 Fn(.)25 1673 y Fl(\000)30 b Fo(portno)14 b Fn(denotes)i(a)f(p)q(ort)f(in)j
1944 (host)d(b)o(yte)h(order)g(and)h(is)f(of)g(t)o(yp)q(e)g(in)o(t)0
1945 1812 y Fo(sockinetbuf)f(ins\(ty,)g(proto\))240 1888 y Fn(Constructs)21
1946 b(a)g Fo(sockinetbuf)e Fn(ob)s(ject)i Fo(ins)g Fn(whose)g(so)q(c)o(k)o(et)g
1947 (comm)o(unication)h(t)o(yp)q(e)g(is)g Fo(ty)f Fn(and)240 1950
1948 y(proto)q(col)15 b(is)h Fo(proto)p Fn(.)j Fo(proto)14 b Fn(defaults)i(to)f
1949 (0.)0 2026 y Fo(sockinetbuf)f(ins\(si\))240 2102 y Fn(Constructs)g(a)h
1950 Fo(sockinetbuf)f Fn(ob)s(ject)h Fo(ins)f Fn(whic)o(h)i(uses)g(the)f(same)g
1951 (so)q(c)o(k)o(et)g(as)f Fo(si)h Fn(uses.)0 2179 y Fo(ins)g(=)g(si)66
1952 b Fn(p)q(erforms)17 b(the)h(same)g(function)g(as)f Fo(sockbuf::operator=)p
1953 Fn(.)25 b(See)18 b(Chapter)g(2)f([so)q(c)o(kbuf)h(Class],)240
1954 2241 y(page)d(4,)g(for)f(more)h(details.)0 2317 y Fo(ins.open\(ty,)f(proto\))
1955 240 2393 y Fn(create)g(a)f(new)h Fo(sockinetbuf)e Fn(whose)i(t)o(yp)q(e)g
1956 (and)g(proto)q(col)f(are)h Fo(ty)f Fn(and)h Fo(proto)f Fn(resp)q(ectiv)o(ely)
1957 j(and)240 2455 y(assign)f(it)h(to)e Fo(ins)p Fn(.)0 2532 y
1958 Fo(sockinetaddr)g(sina)g(=)h(ins.localaddr\(\))240 2608 y Fn(returns)f(the)f
1959 (lo)q(cal)i Fi(inet)h Fn(address)e(of)f(the)h Fo(sockinetbuf)e
1960 Fn(ob)s(ject)h Fo(ins)p Fn(.)19 b(The)14 b(call)h(will)g(mak)o(e)e(sense)240
1961 2670 y(only)j(after)e(a)h(call)h(to)f(either)h Fo(sockbuf::bind)d
1962 Fn(or)i Fo(sockbuf::connect)p Fn(.)p eop
1963 %%Page: 15 17
1964 bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
1965 b(15)0 183 y Fo(sockinetaddr)14 b(sina)g(=)h(ins.peeraddr\(\))240
1966 255 y Fn(returns)f(the)h(p)q(eer)g Fi(inet)h Fn(address)e(of)g(the)g
1967 Fo(sockinetbuf)f Fn(ob)s(ject)h Fo(ins)p Fn(.)19 b(The)14 b(call)i(will)g
1968 (mak)o(e)d(sense)240 318 y(only)j(after)e(a)h(call)h(to)f Fo
1969 (sockbuf::connect)p Fn(.)0 390 y Fo(const)f(char*)h(hn)g(=)g
1970 (ins.localhost\(\))240 462 y Fn(returns)j(the)f(lo)q(cal)i
1971 Fi(inet)g Fn(thostname)e(of)h(the)f Fo(sockinetbuf)g Fn(ob)s(ject)g
1972 Fo(ins)p Fn(.)26 b(The)18 b(call)h(will)g(mak)o(e)240 524 y(sense)d(only)f
1973 (after)g(a)g(call)h(to)f(either)h Fo(sockbuf::bind)d Fn(or)i
1974 Fo(sockbuf::connect)p Fn(.)0 596 y Fo(const)f(char*)h(hn)g(=)g
1975 (ins.peerhost\(\))240 668 y Fn(returns)j(the)g(p)q(eer)h Fi(inet)h
1976 Fn(thostname)d(of)h(the)g Fo(sockinetbuf)f Fn(ob)s(ject)h Fo(ins)p
1977 Fn(.)28 b(The)18 b(call)i(will)f(mak)o(e)240 730 y(sense)d(only)f(after)g(a)g
1978 (call)h(to)f Fo(sockbuf::connect)p Fn(.)0 802 y Fo(int)g(pn)g(=)g
1979 (ins.localport\(\))240 875 y Fn(returns)26 b(the)g(lo)q(cal)h
1980 Fi(inet)h Fn(p)q(ort)d(n)o(um)o(b)q(er)i(of)e(the)h Fo(sockinetbuf)f
1981 Fn(ob)s(ject)g Fo(ins)h Fn(in)h(host)e(b)o(yte)240 937 y(order.)59
1982 b(The)28 b(call)i(will)g(mak)o(e)e(sense)g(only)h(after)f(a)g(call)h(to)f
1983 (either)h Fo(sockbuf::bind)d Fn(or)240 999 y Fo(sockbuf::connect)p
1984 Fn(.)0 1071 y Fo(int)15 b(pn)g(=)g(ins.peerport\(\))240 1143
1985 y Fn(returns)j(the)g(p)q(eer)h Fi(inet)h Fn(p)q(ort)d(n)o(um)o(b)q(er)i(of)f
1986 (the)g Fo(sockinetbuf)e Fn(ob)s(ject)i Fo(ins)f Fn(in)i(lo)q(cal)h(host)d(b)o
1987 (yte)240 1205 y(order.)j(The)15 b(call)h(will)h(mak)o(e)e(sense)h(only)f
1988 (after)g(a)g(call)h(to)f Fo(sockbuf::connect)p Fn(.)0 1278
1989 y Fo(ins.bind)f(\(\))240 1350 y Fn(binds)i Fo(ins)f Fn(to)g(the)g(default)h
1990 (address)f Fi(INADDR)p 1087 1350 14 2 v 17 w(ANY)22 b Fn(and)15
1991 b(the)g(default)h(p)q(ort.)0 1422 y Fo(ins.bind)e(\(adr,)h(portno\))240
1992 1494 y Fn(binds)h Fo(ins)f Fn(to)g(the)g(address)g Fo(adr)g
1993 Fn(and)g(the)h(p)q(ort)f Fo(portno)p Fn(.)0 1566 y Fo(ins.bind)f(\(adr,)h
1994 (serv,)f(proto\))240 1638 y Fn(binds)j Fo(ins)e Fn(to)f(the)i(address,)f
1995 Fo(adr)g Fn(and)h(the)f(p)q(ort)g(corresp)q(onding)i(to)e(the)g(service)h
1996 Fo(serv)f Fn(and)h(the)240 1700 y(proto)q(col)f Fo(proto>)p
1997 Fn(.)0 1772 y Fo(ins.bind)f(\(thostname,)g(portno\))240 1844
1998 y Fn(binds)24 b Fo(ins)f Fn(to)f(the)h(address)g(corresp)q(onding)h(to)f(the)
1999 g(hostname)f Fo(thostname)g Fn(and)h(the)g(p)q(ort)240 1907
2000 y Fo(portno)p Fn(.)0 1979 y Fo(ins.bind)14 b(\(thostname,)g(serv,)g(proto\))
2001 240 2051 y Fn(binds)j Fo(ins)e Fn(to)f(the)i(address)f(corresp)q(onding)i(to)
2002 d(the)i(hostname)f Fo(thostname)f Fn(and)i(the)f(p)q(ort)g(cor-)240
2003 2113 y(resp)q(onding)h(to)f(the)g(service)h Fo(serv)f Fn(and)g(the)h(proto)q
2004 (col)f Fo(proto>)p Fn(.)0 2185 y Fo(ins.connect)f(\(adr,)g(portno\))240
2005 2257 y Fn(connects)i Fo(ins)e Fn(to)h(the)g(address)g Fo(adr)g
2006 Fn(and)h(the)f(p)q(ort)g Fo(portno)p Fn(.)0 2329 y Fo(ins.connect)f(\(adr,)g
2007 (serv,)h(proto\))240 2401 y Fn(connects)i Fo(ins)f Fn(to)g(the)g(address,)h
2008 Fo(adr)f Fn(and)h(the)f(p)q(ort)g(corresp)q(onding)i(to)e(the)g(service)i
2009 Fo(serv)e Fn(and)240 2464 y(the)f(proto)q(col)g Fo(proto>)p
2010 Fn(.)0 2536 y Fo(ins.connect)f(\(thostname,)f(portno\))240
2011 2608 y Fn(connects)18 b Fo(ins)f Fn(to)h(the)f(address)h(corresp)q(onding)h
2012 (to)e(the)h(hostname)f Fo(thostname)g Fn(and)g(the)h(p)q(ort)240
2013 2670 y Fo(portno)p Fn(.)p eop
2014 %%Page: 16 18
2015 bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
2016 b(16)0 183 y Fo(ins.connect)14 b(\(thostname,)f(serv,)i(proto\))240
2017 259 y Fn(connects)j Fo(ins)f Fn(to)h(the)f(address)h(corresp)q(onding)h(to)e
2018 (the)h(hostname)f Fo(thostname)g Fn(and)g(the)h(p)q(ort)240
2019 321 y(corresp)q(onding)e(to)f(the)g(service)h Fo(serv)f Fn(and)g(the)g(proto)
2020 q(col)h Fo(proto>)p Fn(.)0 554 y Fm(4.2)33 b Fh(inet)15 b Fm(Datagram)f(So)r
2021 (c)n(k)n(ets)62 692 y Fn(The)i(follo)o(wing)h(t)o(w)o(o)d(programs)h
2022 (illustrates)i(ho)o(w)e(to)g(use)h Fo(sockinetbuf)e Fn(class)i(for)g
2023 (datagram)e(connection)0 754 y(in)20 b Fi(inet)g Fn(domain.)32
2024 b Fo(tdinread.cc)17 b Fn(also)i(sho)o(ws)f(ho)o(w)h(to)f(use)h
2025 Fo(isockinet)f Fn(class)h(and)g Fo(tdinwrite.cc)f Fn(sho)o(ws)0
2026 816 y(ho)o(w)d(to)f(use)i Fo(osockinet)e Fn(class.)0 1032 y
2027 Fg(tdinread.cc)120 1170 y Fo(//)24 b(reads)f(data)g(sent)g(by)h(tdinwrite.cc)
2028 120 1220 y(#include)f(<sockinet.h>)120 1320 y(int)g(main\(int)g(ac,)h(char**)
2029 f(av\))120 1370 y({)311 1419 y(isockinet)46 b(is)24 b
2030 (\(sockbuf::sock_dgram\);)311 1469 y(is->bind\(\);)311 1569
2031 y(cout)f(<<)h("localhost)e(=)i(")g(<<)f(so.localhost\(\))f(<<)i(endl)430
2032 1619 y(<<)g("localport)e(=)i(")g(<<)f(so.localport\(\))f(<<)i(endl;)311
2033 1718 y(char)214 b(buf[256];)311 1768 y(int)238 b(n;)311 1868
2034 y(is)23 b(>>)h(n;)311 1917 y(cout)f(<<)h(av[0])f(<<)h(":)f(";)311
2035 1967 y(while\(n--\))f({)502 2017 y(is)h(>>)h(buf;)502 2067
2036 y(cout)f(<<)h(buf)f(<<)h(')f(';)311 2117 y(})311 2167 y(cout)g(<<)h(endl;)311
2037 2266 y(return)f(0;)120 2316 y(})0 2532 y Fg(tdin)n(write.cc)120
2038 2670 y Fo(//)h(sends)f(data)g(to)h(tdinread.cc)p eop
2039 %%Page: 17 19
2040 bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
2041 b(17)120 183 y Fo(#include)23 b(<sockinetbuf.h>)120 233 y(#include)g
2042 (<stdlib.h>)120 333 y(int)g(main\(int)g(ac,)h(char**)f(av\))120
2043 382 y({)311 432 y(if)g(\(ac)h(<)g(3\))f({)502 482 y(cerr)g(<<)h("USAGE:)f(")g
2044 (<<)h(av[0])f(<<)h(")f(thostname)g(port-number)f(")621 532
2045 y(<<)i("data)f(...)g(")h(<<)g(endl;)502 582 y(return)f(1;)311
2046 632 y(})311 731 y(osockinet)g(os)g(\(sockbuf::sock_dgram\);)311
2047 781 y(os->connect)f(\(av[1],)h(atoi\(av[2]\)\);)311 881 y(cout)g(<<)h
2048 ("local:)f(")g(<<)h(so.localport\(\))e(<<)i(')f(')740 930 y(<<)h
2049 (so.localhost\(\))e(<<)i(endl)430 980 y(<<)g("peer:)47 b(")23
2050 b(<<)h(so.peerport\(\))e(<<)i(')f(')740 1030 y(<<)h(so.peerhost\(\))e(<<)i
2051 (endl;)311 1130 y(os)f(<<)h(ac-3;)f(av)h(+=)f(3;)311 1180 y(while\(*av\))f
2052 (os)i(<<)g(*av++)f(<<)g(')h(';)311 1229 y(os)f(<<)h(endl;)311
2053 1329 y(return)f(0;)120 1379 y(})0 1664 y Fm(4.3)33 b Fh(inet)15
2054 b Fm(Stream)g(So)r(c)n(k)n(ets)62 1802 y Fn(The)j(follo)o(wing)g(t)o(w)o(o)e
2055 (programs)h(illustrates)h(the)g(use)f(of)g Fo(sockinetbuf)f
2056 Fn(class)i(for)f(stream)g(connection)h(in)0 1865 y Fi(inet)f
2057 Fn(domain.)j(It)15 b(also)h(sho)o(ws)e(ho)o(w)h(to)f(use)i
2058 Fo(iosockinet)e Fn(class.)0 2083 y Fg(tsinread.cc)120 2222
2059 y Fo(//)24 b(receives)e(strings)h(from)h(tsinwrite.cc)e(and)h(sends)g(the)h
2060 (strlen)120 2271 y(//)g(of)f(each)g(string)h(back)f(to)g(tsinwrite.cc)120
2061 2321 y(#include)190 b(<sockinet.h>)120 2421 y(int)23 b(main\(\))120
2062 2471 y({)311 2521 y(sockinetbuf)118 b(si\(sockbuf::sock_stream\))o(;)311
2063 2570 y(si.bind\(\);)311 2670 y(cout)23 b(<<)h(si.localhost\(\))e(<<)h(')h(')g
2064 (<<)f(si.localport\(\))f(<<)i(endl;)p eop
2065 %%Page: 18 20
2066 bop 0 -58 a Fn(Chapter)15 b(4:)k(so)q(c)o(kinetbuf)e(Class)1328
2067 b(18)311 183 y Fo(si.listen\(\);)311 283 y(iosockinet)22 b(s)i(=)g
2068 (si.accept\(\);)311 333 y(char)238 b(buf[1024];)311 432 y(while)23
2069 b(\(s)h(>>)f(buf\))h({)502 482 y(cout)f(<<)h(buf)f(<<)h(')f(';)502
2070 532 y(s)h(<<)f(::strlen\(buf\))f(<<)i(endl;)311 582 y(})311
2071 632 y(cout)f(<<)h(endl;)311 731 y(return)f(0;)120 781 y(})0
2072 989 y Fg(tsin)n(write.cc)120 1126 y Fo(//)h(sends)f(strings)g(to)g
2073 (tsinread.cc)g(and)g(gets)g(back)h(their)f(length)120 1175
2074 y(//)h(usage:)f(tsinwrite)f(hostname)h(portno)120 1225 y(//)191
2075 b(see)23 b(the)h(output)f(of)g(tsinread)g(for)g(what)h(hostname)e(and)i
2076 (portno)f(to)h(use)120 1325 y(#include)190 b(<sockinet.h>)120
2077 1375 y(#include)g(<stdlib.h>)120 1474 y(int)23 b(main\(int)g(ac,)h(char**)f
2078 (av\))120 1524 y({)311 1574 y(iosockinet)f(sio)i(\(sockbuf::sock_stream\);)
2079 311 1624 y(sio->connect)e(\(av[1],)h(atoi)g(\(av[2]\)\);)311
2080 1723 y(sio)g(<<)h("Hello!)f(This)g(is)h(a)f(test\\n")g(<<)h(flush;)311
2081 1823 y(//)f(terminate)g(the)h(while)f(loop)g(in)h(tsinread.cc)311
2082 1873 y(si.shutdown\(sockbuf::shut)o(_write\);)311 1972 y(int)f(len;)311
2083 2022 y(while)g(\(s)h(>>)f(len\))h(cout)f(<<)g(len)h(<<)g(')f(';)311
2084 2072 y(cout)g(<<)h(endl;)311 2172 y(return)f(0;)120 2221 y(})p
2085 eop
2086 %%Page: 19 21
2087 bop 0 -58 a Fn(Chapter)15 b(5:)k(so)q(c)o(kinetaddr)d(Class)1302
2088 b(19)0 183 y Fk(5)41 b(so)r(c)n(kinetaddr)14 b(Class)62 369
2089 y Fn(Class)c Fo(sockinetaddr)f Fn(is)i(deriv)o(ed)g(from)e
2090 Fo(sockAddr)g Fn(declared)i(in)g Fo(<sockstream.h>)e Fn(and)h(from)f
2091 Fo(sockaddr_in)0 432 y Fn(declared)17 b(in)f Fo(<netinet/in.h>)p
2092 Fn(.)i(Alw)o(a)o(ys)d(use)g(a)g Fo(sockinetaddr)f Fn(ob)s(ject)h(for)f(an)i
2093 (address)f(with)h Fi(inet)h Fn(domain)0 494 y(of)e(so)q(c)o(k)o(ets.)k(See)d
2094 (Section)g(2.4)e([Connection)i(Establishmen)o(t],)f(page)g(9.)62
2095 631 y(In)h(what)f(follo)o(ws,)25 768 y Fl(\000)30 b Fo(adr)15
2096 b Fn(denotes)g(an)g Fi(inet)i Fn(address)e(in)h(host)f(b)o(yte)g(order)g(and)
2097 h(is)f(of)g(t)o(yp)q(e)g(unsigned)i(long)25 842 y Fl(\000)30
2098 b Fo(serv)15 b Fn(denotes)g(a)g(service)h(lik)o(e)g Fo(")p
2099 Fn(nn)o(tp)p Fo(")f Fn(and)h(is)f(of)g(t)o(yp)q(e)g(c)o(har*)25
2100 917 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(a)f(proto)q(col)g(lik)o(e)h
2101 Fo(")p Fn(tcp)p Fo(")f Fn(and)h(is)f(of)g(t)o(yp)q(e)g(c)o(har*)25
2102 991 y Fl(\000)30 b Fo(thostname)13 b Fn(is)i(of)e(t)o(yp)q(e)i(c)o(har*)e
2103 (and)i(denotes)f(the)g(name)h(of)e(a)h(host)g(lik)o(e)h Fo
2104 ("kelvin.acc.virginia.edu")90 1054 y Fn(or)g Fo("128.143.24.31")p
2105 Fn(.)25 1128 y Fl(\000)30 b Fo(portno)14 b Fn(denotes)i(a)f(p)q(ort)f(in)j
2106 (host)d(b)o(yte)h(order)g(and)h(is)f(of)g(t)o(yp)q(e)g(in)o(t)0
2107 1265 y Fo(sockinetaddr)f(sina)240 1340 y Fn(Constructs)g(a)h
2108 Fo(sockinetaddr)e Fn(ob)s(ject)h Fo(sina)g Fn(with)i(default)f(address)g
2109 Fi(INADDR)p 1664 1340 14 2 v 17 w(ANY)21 b Fn(and)15 b(de-)240
2110 1402 y(fault)g(p)q(ort)g(n)o(um)o(b)q(er)h(0.)0 1477 y Fo(sockinetaddr)e
2111 (sina\(adr,)f(portno\))240 1551 y Fn(Constructs)g(a)g Fo(sockinetaddr)f
2112 Fn(ob)s(ject)h Fo(sina)g Fn(setting)g(inet)i(address)e(to)g
2113 Fo(adr)g Fn(and)h(the)g(p)q(ort)f(n)o(um-)240 1613 y(b)q(er)j(to)e
2114 Fo(portno)p Fn(.)19 b Fo(portno)c Fn(defaults)g(to)g(0.)0 1688
2115 y Fo(sockinetaddr)f(sina\(adr,)f(serv,)i(proto\))240 1762 y
2116 Fn(Constructs)e(a)g Fo(sockinetaddr)f Fn(ob)s(ject)h Fo(sina)g
2117 Fn(setting)g(inet)i(address)e(to)g Fo(adr)g Fn(and)h(the)g(p)q(ort)f(n)o(um-)
2118 240 1825 y(b)q(er)k(corresp)q(onding)h(to)e(the)h(service)g
2119 Fo(serv)g Fn(and)g(the)f(proto)q(col)h Fo(proto)p Fn(.)24 b(The)17
2120 b(proto)q(col)f(defaults)240 1887 y(to)f Fo(")p Fn(tcp)p Fo(")p
2121 Fn(.)0 1961 y Fo(sockinetaddr)f(sina\(thostname,)f(portno\))240
2122 2036 y Fn(Constructs)29 b(a)g Fo(sockinetaddr)f Fn(ob)s(ject)g
2123 Fo(sina)h Fn(setting)h(inet)g(address)g(to)e(the)i(address)f(of)240
2124 2098 y Fo(thostname)14 b Fn(and)h(the)h(p)q(ort)e(n)o(um)o(b)q(er)i(to)f
2125 Fo(portno)p Fn(.)k Fo(portno)14 b Fn(defaults)i(to)e(0.)0 2173
2126 y Fo(sockinetaddr)g(sina\(thostname,)f(serv,)h(proto\))240
2127 2247 y Fn(Constructs)29 b(a)g Fo(sockinetaddr)f Fn(ob)s(ject)g
2128 Fo(sina)h Fn(setting)h(inet)g(address)g(to)e(the)i(address)f(of)240
2129 2310 y Fo(thostname)20 b Fn(and)i(the)f(p)q(ort)h(n)o(um)o(b)q(er)f(corresp)q
2130 (onding)i(to)e(the)g(service)i Fo(serv)d Fn(and)i(the)g(proto-)240
2131 2372 y(col)16 b Fo(proto)p Fn(.)j(The)c(proto)q(col)g(defaults)h(to)f
2132 Fo(")p Fn(tcp)p Fo(")p Fn(.)0 2446 y Fo(void*)f(a)h(=)g(sina)240
2133 2521 y Fn(returns)g(the)g(address)h(of)e(the)i Fo(sockaddr_in)d
2134 Fn(part)i(of)g Fo(sockinetaddr)e Fn(ob)s(ject)i Fo(sina)f Fn(as)h(v)o(oid*.)0
2135 2595 y Fo(int)g(sz)g(=)g(sina.size\(\))240 2670 y Fn(returns)g(the)g(sizeof)h
2136 Fo(sockaddr_in)e Fn(part)g(of)h Fo(sockinetaddr)f Fn(ob)s(ject)g
2137 Fo(sina)p Fn(.)p eop
2138 %%Page: 20 22
2139 bop 0 -58 a Fn(Chapter)15 b(5:)k(so)q(c)o(kinetaddr)d(Class)1302
2140 b(20)0 183 y Fo(int)15 b(af)g(=)g(sina.family\(\))240 258 y
2141 Fn(returns)g Fo(sockinetbuf::af_inet)d Fn(if)k(all)g(is)g(w)o(ell.)0
2142 333 y Fo(int)f(pn)g(=)g(sina.getport\(\))240 407 y Fn(returns)g(the)g(p)q
2143 (ort)g(n)o(um)o(b)q(er)h(of)f(the)g Fo(sockinetaddr)e Fn(ob)s(ject)i
2144 Fo(sina)g Fn(in)h(host)e(b)o(yte)h(order.)0 482 y Fo(const)f(char*)h(hn)g(=)g
2145 (getthostname\(\))240 557 y Fn(returns)g(the)g(host)g(name)g(of)g(the)g
2146 Fo(sockinetaddr)f Fn(ob)s(ject)g Fo(sina)p Fn(.)p eop
2147 %%Page: 21 23
2148 bop 0 -58 a Fn(Chapter)15 b(6:)k(so)q(c)o(kunixbuf)e(Class)1317
2149 b(21)0 183 y Fk(6)41 b(so)r(c)n(kunixbuf)12 b(Class)62 353
2150 y Fo(sockunixbuf)d Fn(class)i(is)g(deriv)o(ed)g(from)f Fo(sockbuf)g
2151 Fn(class)g(declared)i(in)f Fo(<sockstream.h>)e Fn(and)i(hence,)h(inherits)0
2152 416 y(most)j(of)g(the)h(public)i(mem)o(b)q(er)d(functions)i(of)e
2153 Fo(sockbuf)p Fn(.)20 b(See)d(Chapter)e(2)g([so)q(c)o(kbuf)h(Class],)f(page)g
2154 (4,)g(for)g(more)0 478 y(information)g(on)g Fo(sockbuf)p Fn(.)0
2155 686 y Fm(6.1)33 b(Metho)r(ds)62 823 y Fn(In)16 b(what)f(follo)o(ws,)25
2156 960 y Fl(\000)30 b Fo(ty)15 b Fn(denotes)g(the)h(so)q(c)o(k)o(et)e(t)o(yp)q
2157 (e)h(and)h(is)g(of)e(t)o(yp)q(e)i Fo(sockbuf::type)25 1030
2158 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(the)f(proto)q(col)g(n)o(um)o(b)q
2159 (er)h(and)f(is)h(of)f(t)o(yp)q(e)g(in)o(t)25 1101 y Fl(\000)30
2160 b Fo(su)15 b Fn(is)h(a)e Fo(sockbuf)h Fn(and)g(m)o(ust)g(b)q(e)h(in)g
2161 Fi(unix)j Fn(domain)25 1171 y Fl(\000)30 b Fo(path)15 b Fn(is)g(the)h
2162 Fi(unix)j Fn(path)c(name)g(lik)o(e)i Fo(")p Fn(/tmp/unix)p
2163 981 1171 14 2 v 16 w(so)q(c)o(k)o(et)p Fo(")0 1308 y(sockunixbuf)d(uns\(ty,)g
2164 (proto\))240 1379 y Fn(Constructs)k(a)g Fo(sockunixbuf)f Fn(ob)s(ject)h
2165 Fo(uns)g Fn(with)h Fo(ty)f Fn(as)g(its)h(t)o(yp)q(e)g(and)f
2166 Fo(proto)g Fn(as)g(its)h(proto)q(col)240 1441 y(n)o(um)o(b)q(er.)h
2167 Fo(proto)15 b Fn(defaults)g(to)g(0.)0 1512 y Fo(sockunixbuf)f(uns)g(=)h(su)
2168 240 1582 y Fn(Constructs)f(a)h Fo(sockunixbuf)f Fn(ob)s(ject)h
2169 Fo(uns)f Fn(whic)o(h)i(uses)g(the)f(same)g(so)q(c)o(k)o(et)g(as)f(is)i(used)g
2170 (b)o(y)f Fo(su)p Fn(.)0 1653 y Fo(uns)g(=)g(su)66 b(sockunixbuf)14
2171 b Fn(ob)s(ject)h Fo(uns)g Fn(closes)g(its)h(curren)o(t)f(so)q(c)o(k)o(et)g
2172 (if)h(no)f(other)g Fo(sockbuf)f Fn(is)i(referring)g(to)f(it)240
2173 1715 y(and)g(uses)h(the)f(so)q(c)o(k)o(et)g(that)f Fo(sockbuf)g
2174 Fn(ob)s(ject)h Fo(su)g Fn(is)h(using.)0 1786 y Fo(uns.open\(ty,)e(proto\))240
2175 1856 y Fn(create)h(a)h Fo(sockunixbuf)e Fn(ob)s(ject)h(with)h
2176 Fo(ty)f Fn(as)h(its)g(t)o(yp)q(e)f(and)h Fo(proto)f Fn(as)g(its)h(proto)q
2177 (col)g(and)g(assign)240 1919 y(the)f Fo(sockunixbuf)f Fn(ob)s(ject)h(so)f
2178 (created)i(to)e Fo(*this)p Fn(.)19 b(It)d(returns)f Fo(this)p
2179 Fn(.)k Fo(proto)14 b Fn(defaults)i(to)f(0.)0 1989 y Fo(uns.bind\(path\))240
2180 2060 y Fn(binds)h Fo(uns)f Fn(to)g(the)g Fi(unix)k Fn(pathname)d
2181 Fo(path)p Fn(.)0 2130 y Fo(uns.connect\(path\))240 2201 y Fn(connects)g
2182 Fo(uns)e Fn(to)h(the)g Fi(unix)20 b Fn(pathname)15 b Fo(path)p
2183 Fn(.)0 2408 y Fm(6.2)33 b Fh(unix)17 b Fm(Datagram)d(So)r(c)n(k)n(ets)62
2184 2545 y Fn(The)i(follo)o(wing)h(t)o(w)o(o)d(programs)h(illustrates)i(ho)o(w)e
2185 (to)g(use)h Fo(sockunixbuf)e Fn(class)i(for)g(datagram)e(connection)0
2186 2608 y(in)19 b Fi(unix)j Fn(domain.)29 b Fo(tdunread.cc)16
2187 b Fn(also)i(sho)o(ws)g(ho)o(w)f(to)h(use)g Fo(isockunix)f Fn(class)h(and)g
2188 Fo(tdunwrite.cc)f Fn(sho)o(ws)0 2670 y(ho)o(w)e(to)f(use)i
2189 Fo(osockunix)e Fn(class.)p eop
2190 %%Page: 22 24
2191 bop 0 -58 a Fn(Chapter)15 b(6:)k(so)q(c)o(kunixbuf)e(Class)1317
2192 b(22)0 183 y Fg(tdunread.cc)120 321 y Fo(//)24 b(reads)f(data)g(sent)g(by)h
2193 (tdunwrite.cc)120 371 y(#include)f(<sockunix.h>)120 421 y(#include)g
2194 (<unistd.h>)120 471 y(#include)g(<errno.h>)120 570 y(int)g(main\(int)g(ac,)h
2195 (char**)f(av\))120 620 y({)311 670 y(if)g(\(ac)h(!=)g(2\))f({)502
2196 720 y(cerr)g(<<)h("USAGE:)f(")g(<<)h(av[0])f(<<)h(")f(socket_path_name\\n";)
2197 502 770 y(return)g(1;)311 820 y(})311 919 y(//)g(isockunix)g(builds)g(the)h
2198 (sockunixbuf)e(object)311 969 y(isockunix)46 b(su)24 b
2199 (\(sockbuf::sock_dgram\);)311 1069 y(su->bind\(av[1]\);)311
2200 1168 y(cout)f(<<)h("Socket)f(name)g(=)h(")f(<<)h(av[1])f(<<)h(endl;)311
2201 1268 y(if)f(\(chmod\(av[1],)g(0777\))g(==)g(-1\))h({)502 1318
2202 y(perror\("chmod"\);)502 1367 y(return)f(1;)311 1417 y(})311
2203 1517 y(char)g(buf[1024];)311 1567 y(int)g(i;)311 1617 y(su)g(>>)h(i;)311
2204 1666 y(cout)f(<<)h(av[0])f(<<)h(":)f(")h(<<)f(i)h(<<)g(")g(strings:)e(";)311
2205 1716 y(while)h(\(i--\))g({)502 1766 y(su)g(>>)h(buf;)502 1816
2206 y(cout)47 b(<<)24 b(buf)f(<<)h(')f(';)311 1866 y(})311 1915
2207 y(cout)g(<<)h(endl;)311 2015 y(unlink\(av[1]\);)311 2065 y(return)f(0;)120
2208 2115 y(})0 2333 y Fg(tdun)n(write.cc)120 2471 y Fo(//)h(sends)f(data)g(to)h
2209 (tdunread.cc)120 2521 y(#include)f(<sockunix.h>)120 2620 y(int)g(main\(int)g
2210 (ac,)h(char**)f(av\))120 2670 y({)p eop
2211 %%Page: 23 25
2212 bop 0 -58 a Fn(Chapter)15 b(6:)k(so)q(c)o(kunixbuf)e(Class)1317
2213 b(23)311 183 y Fo(if)23 b(\(ac)h(<)g(2\))f({)502 233 y(cerr)g(<<)h("USAGE:)f
2214 (")g(<<)h(av[0])621 283 y(<<)g(")f(socket_path_name)f(data...\\n";)502
2215 333 y(return)h(1;)311 382 y(})311 482 y(osockunix)g(su)g
2216 (\(sockbuf::sock_dgram\);)120 582 y(su->connect)f(\(av[1]\);)311
2217 681 y(su)h(<<)h(ac)g(<<)f(')h(';)311 731 y(while)f(\(*av\))g({)h(su)g(<<)f
2218 (av[i])g(<<)h(')g(';)f(av++;)g(})311 781 y(su)g(<<)h(endl;)311
2219 881 y(return)f(0;)120 930 y(})0 1166 y Fm(6.3)33 b Fh(unix)17
2220 b Fm(Stream)f(So)r(c)n(k)n(ets)62 1304 y Fn(The)g(follo)o(wing)h(t)o(w)o(o)e
2221 (programs)f(illustrates)j(ho)o(w)f(to)f(use)h Fo(sockunixbuf)f
2222 Fn(class)h(for)f(stream)g(connection)i(in)0 1366 y Fi(unix)i
2223 Fn(domain.)i(It)15 b(also)g(sho)o(ws)g(ho)o(w)f(to)h(use)g
2224 Fo(iosockunix)f Fn(class.)0 1585 y Fg(tsunread.cc)120 1724
2225 y Fo(//)24 b(exchanges)e(char)i(strings)e(with)i(tsunwrite.cc)120
2226 1773 y(#include)f(<sockunix.h>)120 1823 y(#include)g(<unistd.h>)120
2227 1873 y(#include)g(<errno.h>)120 1973 y(int)g(main\(int)g(ac,)h(char**)f(av\))
2228 120 2022 y({)311 2072 y(if)g(\(ac)h(!=)g(2\))f({)502 2122 y(cerr)g(<<)h
2229 ("USAGE:)f(")g(<<)h(av[0])f(<<)h(")f(socket_path_name\\n";)502
2230 2172 y(return)g(1;)311 2222 y(})311 2321 y(sockunixbuf)46 b
2231 (su\(sockbuf::sock_stream\);)311 2371 y(su.bind\(av)22 b([1]\);)311
2232 2471 y(cout)h(<<)h("Socket)f(name)g(=)h(")f(<<)h(av[1])f(<<)h(endl;)311
2233 2570 y(if)f(\(chmod\(av[1],)g(0777\))g(==)g(-1\))h({)502 2620
2234 y(perror\("chmod"\);)502 2670 y(return)f(1;)p eop
2235 %%Page: 24 26
2236 bop 0 -58 a Fn(Chapter)15 b(6:)k(so)q(c)o(kunixbuf)e(Class)1317
2237 b(24)311 183 y Fo(})311 283 y(su.listen\(3\);)311 382 y(iosockunix)22
2238 b(ioput)i(=)f(su.accept)g(\(\);)311 432 y(char)166 b(buf[1024];)311
2239 532 y(ioput)23 b(<<)h(av[0])f(<<)g(')h(')g(<<)f(av[1])h(<<)f(endl;)311
2240 582 y(while)g(\()h(ioput)f(>>)h(buf)f(\))h(cout)f(<<)h(av[0])f(<<)g(":)h(")g
2241 (<<)f(buf)h(<<)f(endl;)311 632 y(unlink\(av[1]\);)311 681 y(return)g(0;)120
2242 731 y(})0 939 y Fg(tsun)n(write.cc)120 1076 y Fo(//)h(exchanges)e(char)i
2243 (strings)e(with)i(tsunread.cc)120 1126 y(#include)f(<sockunix.h>)120
2244 1225 y(int)g(main\(int)g(ac,)h(char**)f(av\))120 1275 y({)311
2245 1325 y(if)g(\(ac)h(<)g(2\))f({)502 1375 y(cerr)g(<<)h("USAGE:)f(")g(<<)h
2246 (av[0])621 1424 y(<<)g(")f(socket_path_name)f(data...\\n";)502
2247 1474 y(return)h(1;)311 1524 y(})311 1624 y(iosockunix)f(oput)i
2248 (\(sockbuf::sock_stream\);)311 1673 y(oput->connect)e(\(av)h([1]\);)311
2249 1773 y(char)g(buf[128];)311 1873 y(oput)g(>>)h(buf;)311 1923
2250 y(cout)f(<<)h(buf)f(<<)h(')g(';)311 1972 y(oput)f(>>)h(buf;)311
2251 2022 y(cout)f(<<)h(buf)f(<<)h(endl;)311 2122 y(while)f(\(*av\))g(oput)h(<<)f
2252 (*av++)g(<<)h(')g(';)311 2172 y(oput)f(<<)h(endl;)311 2271
2253 y(return)f(0;)120 2321 y(})p eop
2254 %%Page: 25 27
2255 bop 0 -58 a Fn(Chapter)15 b(7:)k(so)q(c)o(kunixaddr)e(Class)1290
2256 b(25)0 183 y Fk(7)41 b(so)r(c)n(kunixaddr)13 b(Class)62 370
2257 y Fn(Class)e Fo(sockunixaddr)e Fn(is)j(deriv)o(ed)g(from)e(class)h
2258 Fo(sockAddr)f Fn(declared)i(in)f Fo(<sockstream.h>)e Fn(and)i(from)f(struct)0
2259 432 y Fo(sockaddr_un)15 b Fn(declared)i(in)h Fo(<sys/un.h>)p
2260 Fn(.)k(Alw)o(a)o(ys)16 b(use)g Fo(sockunixaddr)f Fn(ob)s(jects)h(for)g
2261 (addresses)g(with)h Fi(unix)0 495 y Fn(domain)f(of)e(so)q(c)o(k)o(ets.)20
2262 b(See)15 b(Section)i(2.4)d([Connection)h(Establishmen)o(t],)g(page)g(9.)62
2263 632 y(In)h(what)f(follo)o(ws,)25 769 y Fl(\000)30 b Fo(path)15
2264 b Fn(is)g(the)h Fi(unix)j Fn(path)c(name)g(lik)o(e)i Fo(")p
2265 Fn(/tmp/unix)p 981 769 14 2 v 16 w(so)q(c)o(k)o(et)p Fo(")0
2266 906 y(sockunixaddr)d(suna\(path\))240 980 y Fn(Constructs)g(a)h
2267 Fo(sockunixaddr)f Fn(ob)s(ject)g Fo(suna)h Fn(with)h Fo(path)e
2268 Fn(as)h(the)g Fi(unix)20 b Fn(path)15 b(name.)0 1055 y Fo(void*)f(a)h(=)g
2269 (suna)240 1130 y Fn(returns)g(the)g(address)h(of)e(the)i Fo(sockaddr_un)d
2270 Fn(part)i(of)g Fo(sockunixaddr)e Fn(ob)s(ject)i Fo(suna)f Fn(as)h(v)o(oid*.)0
2271 1204 y Fo(int)g(sz)g(=)g(suna.size\(\))240 1279 y Fn(returns)g(the)g(sizeof)h
2272 Fo(sockaddr_un)e Fn(part)g(of)h Fo(sockunixaddr)f Fn(ob)s(ject)g
2273 Fo(suna)p Fn(.)0 1354 y Fo(int)h(af)g(=)g(suna.family\(\))240
2274 1429 y Fn(returns)g Fo(sockunixbuf::af_unix)d Fn(if)k(all)g(is)g(w)o(ell.)p
2275 eop
2276 %%Page: 26 28
2277 bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2278 b(26)0 183 y Fk(8)41 b(so)r(c)n(kstream)15 b(Classes)62 360
2279 y Fn(so)q(c)o(kstream)k(classes)i(are)f(designed)h(in)g(suc)o(h)g(a)f(w)o(a)o
2280 (y)f(that)g(they)i(pro)o(vide)f(the)g(same)g(in)o(terface)h(as)e(their)0
2281 422 y(stream)e(coun)o(terparts)g(do.)28 b(W)l(e)18 b(ha)o(v)o(e)g
2282 Fo(isockstream)e Fn(deriv)o(ed)j(from)e Fo(istream)g Fn(and)i
2283 Fo(osockstream)d Fn(deriv)o(ed)0 485 y(from)e Fo(ostream)p
2284 Fn(.)19 b(W)l(e)d(also)f(ha)o(v)o(e)g Fo(iosockstream)e Fn(whic)o(h)j(is)g
2285 (deriv)o(ed)g(from)f Fo(iostream)p Fn(.)62 622 y(Eac)o(h)f(domain)h(also)f
2286 (has)g(its)h(o)o(wn)e(set)h(of)g Fo(stream)g Fn(classes.)20
2287 b(F)l(or)13 b(example,)i Fo(unix)f Fn(domain)g(has)h Fo(isockunix)p
2288 Fn(,)0 684 y Fo(osockunix)p Fn(,)e(and)h Fo(iosockunix)e Fn(deriv)o(ed)j
2289 (from)f Fo(isockstream)p Fn(,)e Fo(osockstream)p Fn(,)g(and)j
2290 Fo(iosockstream)d Fn(resp)q(ec-)0 746 y(tiv)o(ely)l(.)21 b(Similarly)l(,)c
2291 Fo(inet)e Fn(domain)g(has)g Fo(isockinet)p Fn(,)f Fo(osockinet)p
2292 Fn(,)f(and)j Fo(iosockinet)p Fn(.)0 960 y Fm(8.1)33 b(ioso)r(c)n(kstreams)0
2293 1158 y Fg(8.1.1)d(iso)r(c)n(kstream)16 b(Class)62 1295 y Fn(Since)i
2294 Fo(isockstream)d Fn(is)j(publicly)h(deriv)o(ed)f(from)d Fo(istream)p
2295 Fn(,)h(most)g(of)g(the)h(public)h(functions)g(of)e Fo(istream)0
2296 1357 y Fn(are)f(also)g(a)o(v)m(ailable)i(in)f Fo(isockstream)p
2297 Fn(.)62 1494 y Fo(isockstream)h Fn(rede\014nes)i Fo(rdbuf\(\))f
2298 Fn(de\014ned)h(in)g(its)g(virtual)g(base)f(class)h Fo(ios)p
2299 Fn(.)29 b(Since,)20 b Fo(ios::rdbuf\(\))c Fn(is)0 1557 y(not)f(virtual,)h
2300 (care)g(m)o(ust)f(b)q(e)h(tak)o(en)g(to)f(call)h(the)g(correct)g
2301 Fo(rdbuf\(\))e Fn(through)i(a)f(reference)h(or)f(a)h(p)q(oin)o(ter)g(to)f(an)
2302 0 1619 y(ob)s(ject)g(of)f(class)i Fo(isockstream)p Fn(.)62
2303 1756 y(In)g(what)f(follo)o(ws,)25 1893 y Fl(\000)30 b Fo(sb)15
2304 b Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)25 1965 y Fl(\000)30
2305 b Fo(sbp)15 b Fn(is)g(a)g(p)q(oin)o(ter)h(to)f(a)f Fo(sockbuf)h
2306 Fn(ob)s(ject)0 2102 y Fo(isockstream)f(is\(sb\))240 2174 y
2307 Fn(Constructs)g(an)i Fo(isockstream)d Fn(ob)s(ject)i Fo(is)g
2308 Fn(with)g Fo(sb)g Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 2247 y
2309 Fo(isockstream)f(is\(sbp\))240 2319 y Fn(Constructs)g(an)i
2310 Fo(isockstream)d Fn(ob)s(ject)i Fo(is)g Fn(with)g Fo(*sbp)g
2311 Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 2391 y Fo(sbp)g(=)g(is.rdbuf\(\))240
2312 2463 y Fn(returns)g(a)g(p)q(oin)o(ter)h(to)e(the)h Fo(sockbuf)g
2313 Fn(of)f(the)i Fo(isockstream)d Fn(ob)s(ject)i Fo(is)p Fn(.)0
2314 2535 y Fo(isockstream::operator)d(->)j(\(\))240 2608 y Fn(returns)f(a)f(p)q
2315 (oin)o(ter)h(to)f(the)h Fo(isockstream)p Fn('s)e Fo(sockbuf)h
2316 Fn(so)g(that)g(the)h(user)g(can)f(use)i Fo(isockstream)240
2317 2670 y Fn(ob)s(ject)g(as)f(a)h Fo(sockbuf)g Fn(ob)s(ject.)p
2318 eop
2319 %%Page: 27 29
2320 bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2321 b(27)455 183 y Fo(is->connect)23 b(\(sa\);)g(//)h(same)f(as)g
2322 (is.rdbuf\(\)->connect)f(\(sa\);)0 392 y Fg(8.1.2)30 b(oso)r(c)n(kstream)15
2323 b(Class)62 529 y Fn(Since)j Fo(osockstream)d Fn(is)j(publicly)h(deriv)o(ed)f
2324 (from)d Fo(ostream)p Fn(,)h(most)g(of)g(the)h(public)h(functions)g(of)e
2325 Fo(ostream)0 591 y Fn(are)f(also)g(a)o(v)m(ailable)i(in)f Fo(osockstream)p
2326 Fn(.)62 728 y Fo(osockstream)h Fn(rede\014nes)i Fo(rdbuf\(\))f
2327 Fn(de\014ned)h(in)g(its)g(virtual)g(base)f(class)h Fo(ios)p
2328 Fn(.)29 b(Since,)20 b Fo(ios::rdbuf\(\))c Fn(is)0 791 y(not)f(virtual,)h
2329 (care)g(m)o(ust)f(b)q(e)h(tak)o(en)g(to)f(call)h(the)g(correct)g
2330 Fo(rdbuf\(\))e Fn(through)i(a)f(reference)h(or)f(a)h(p)q(oin)o(ter)g(to)f(an)
2331 0 853 y(ob)s(ject)g(of)f(class)i Fo(osockstream)p Fn(.)62 990
2332 y(In)g(what)f(follo)o(ws,)25 1127 y Fl(\000)30 b Fo(sb)15 b
2333 Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)25 1202 y Fl(\000)30
2334 b Fo(sbp)15 b Fn(is)g(a)g(p)q(oin)o(ter)h(to)f(a)f Fo(sockbuf)h
2335 Fn(ob)s(ject)0 1339 y Fo(osockstream)f(os\(sb\))240 1414 y
2336 Fn(Constructs)g(an)i Fo(osockstream)d Fn(ob)s(ject)i Fo(os)g
2337 Fn(with)g Fo(sb)g Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 1489 y
2338 Fo(osockstream)f(os\(sbp\))240 1564 y Fn(Constructs)g(an)i
2339 Fo(osockstream)d Fn(ob)s(ject)i Fo(os)g Fn(with)g Fo(*sbp)g
2340 Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 1639 y Fo(sbp)g(=)g(os.rdbuf\(\))240
2341 1713 y Fn(returns)g(a)g(p)q(oin)o(ter)h(to)e(the)h Fo(sockbuf)g
2342 Fn(of)f(the)i Fo(osockstream)d Fn(ob)s(ject)i Fo(os)p Fn(.)0
2343 1788 y Fo(osockstream::operator)d(->)j(\(\))240 1863 y Fn(returns)f(a)f(p)q
2344 (oin)o(ter)h(to)f(the)h Fo(osockstream)p Fn('s)e Fo(sockbuf)h
2345 Fn(so)g(that)g(the)h(user)g(can)f(use)i Fo(osockstream)240
2346 1925 y Fn(ob)s(ject)g(as)f(a)h Fo(sockbuf)g Fn(ob)s(ject.)455
2347 2000 y Fo(os->connect)23 b(\(sa\);)g(//)h(same)f(as)g(os.rdbuf\(\)->connect)f
2348 (\(sa\);)0 2209 y Fg(8.1.3)30 b(ioso)r(c)n(kstream)15 b(Class)62
2349 2346 y Fn(Since)e Fo(iosockstream)c Fn(is)j(publicly)i(deriv)o(ed)e(from)e
2350 Fo(iostream)p Fn(,)g(most)h(of)f(the)h(public)j(functions)d(of)g
2351 Fo(iostream)0 2408 y Fn(are)k(also)g(a)o(v)m(ailable)i(in)f
2352 Fo(iosockstream)p Fn(.)62 2545 y Fo(iosockstream)f Fn(rede\014nes)j
2353 Fo(rdbuf\(\))d Fn(de\014ned)j(in)g(its)f(virtual)g(base)g(class)g
2354 Fo(ios)p Fn(.)23 b(Since,)c Fo(ios::rdbuf\(\))14 b Fn(is)0
2355 2608 y(not)h(virtual,)h(care)g(m)o(ust)f(b)q(e)h(tak)o(en)g(to)f(call)h(the)g
2356 (correct)g Fo(rdbuf\(\))e Fn(through)i(a)f(reference)h(or)f(a)h(p)q(oin)o
2357 (ter)g(to)f(an)0 2670 y(ob)s(ject)g(of)f(class)i Fo(iosockstream)p
2358 Fn(.)p eop
2359 %%Page: 28 30
2360 bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2361 b(28)62 183 y(In)16 b(what)f(follo)o(ws,)25 321 y Fl(\000)30
2362 b Fo(sb)15 b Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)25 397 y
2363 Fl(\000)30 b Fo(sbp)15 b Fn(is)g(a)g(p)q(oin)o(ter)h(to)f(a)f
2364 Fo(sockbuf)h Fn(ob)s(ject)0 535 y Fo(iosockstream)f(io\(sb\))240
2365 611 y Fn(Constructs)g(an)i Fo(iosockstream)d Fn(ob)s(ject)i
2366 Fo(io)g Fn(with)g Fo(sb)g Fn(as)g(its)g Fo(sockbuf)p Fn(.)0
2367 687 y Fo(iosockstream)f(io\(sbp\))240 763 y Fn(Constructs)g(an)i
2368 Fo(iosockstream)d Fn(ob)s(ject)i Fo(io)g Fn(with)g Fo(*sbp)g
2369 Fn(as)g(its)g Fo(sockbuf)p Fn(.)0 838 y Fo(sbp)g(=)g(io.rdbuf\(\))240
2370 914 y Fn(returns)g(a)g(p)q(oin)o(ter)h(to)e(the)h Fo(sockbuf)g
2371 Fn(of)f(the)i Fo(iosockstream)d Fn(ob)s(ject)i Fo(io)p Fn(.)0
2372 990 y Fo(iosockstream::operator)d(->)j(\(\))240 1066 y Fn(returns)10
2373 b(a)g(p)q(oin)o(ter)g(to)g(the)g Fo(iosockstream)p Fn('s)e
2374 Fo(sockbuf)h Fn(so)h(that)g(the)g(user)g(can)g(use)h Fo(iosockstream)240
2375 1128 y Fn(ob)s(ject)k(as)f(a)h Fo(sockbuf)g Fn(ob)s(ject.)455
2376 1204 y Fo(io->connect)23 b(\(sa\);)g(//)h(same)f(as)g(io.rdbuf\(\)->connect)f
2377 (\(sa\);)0 1438 y Fm(8.2)33 b(ioso)r(c)n(kinet)15 b(Stream)h(Classes)62
2378 1576 y Fn(W)l(e)g(discus)g(only)g Fo(isockinet)e Fn(class)i(here.)21
2379 b Fo(osockinet)14 b Fn(and)i Fo(iosockinet)e Fn(are)h(similar)h(and)g(are)f
2380 (left)h(out.)0 1638 y(Ho)o(w)o(ev)o(er,)e(they)h(are)g(co)o(v)o(ered)g(in)h
2381 (the)f(examples)h(that)f(follo)o(w.)0 1855 y Fg(8.2.1)30 b(iso)r(c)n(kinet)62
2382 1993 y Fo(isockinet)19 b Fn(is)h(used)g(to)f(handle)i(in)o(terpro)q(cess)g
2383 (comm)o(unication)f(in)h Fi(inet)g Fn(domain.)34 b(It)20 b(is)g(deriv)o(ed)h
2384 (from)0 2055 y Fo(isockstream)f Fn(class)j(and)f(it)g(uses)g(a)g
2385 Fo(sockinetbuf)e Fn(as)h(its)h(stream)g(bu\013er.)39 b(See)23
2386 b(Section)g(8.1.3)d([ioso)q(c)o(k-)0 2118 y(stream],)13 b(page)g(27,)h(for)f
2387 (more)h(details)h(on)f Fo(isockstream)p Fn(.)j(See)e(Chapter)f(4)f([so)q(c)o
2388 (kinetbuf)i(Class],)e(page)h(14,)g(for)0 2180 y(information)h(on)g
2389 Fo(sockinetbuf)p Fn(.)62 2318 y(In)h(what)f(follo)o(ws,)25
2390 2456 y Fl(\000)30 b Fo(ty)17 b Fn(is)g(a)g Fo(sockbuf::type)e
2391 Fn(and)j(m)o(ust)e(b)q(e)i(one)f(of)g Fo(sockbuf::sock_stream)p
2392 Fn(,)d Fo(sockbuf::sock_dgram)p Fn(,)90 2518 y Fo(sockbuf::sock_raw)p
2393 Fn(,)e Fo(sockbuf::sock_rdm)p Fn(,)h(and)i Fo(sockbuf::sock_seqpacket)25
2394 2594 y Fl(\000)30 b Fo(proto)14 b Fn(denotes)i(the)f(proto)q(col)g(n)o(um)o
2395 (b)q(er)h(and)f(is)h(of)f(t)o(yp)q(e)g(in)o(t)25 2670 y Fl(\000)30
2396 b Fo(sb)15 b Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)f(and)i(m)o(ust)e(b)q(e)i
2397 (in)g Fi(inet)h Fn(domain)p eop
2398 %%Page: 29 31
2399 bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2400 b(29)25 183 y Fl(\000)30 b Fo(sinp)15 b Fn(is)g(a)g(p)q(oin)o(ter)h(to)e(an)i
2401 (ob)s(ject)e(of)h Fo(sockinetbuf)0 323 y(isockinet)f(is)h(\(ty,)f(proto\))240
2402 401 y Fn(constructs)k(an)g Fo(isockinet)g Fn(ob)s(ject)g Fo(is)g
2403 Fn(whose)g Fo(sockinetbuf)f Fn(bu\013er)h(is)h(of)g(the)f(t)o(yp)q(e)h
2404 Fo(ty)f Fn(and)240 463 y(has)d(the)g(proto)q(col)h(n)o(um)o(b)q(er)f
2405 Fo(proto)p Fn(.)k(The)d(default)f(proto)q(col)h(n)o(um)o(b)q(er)f(is)h(0.)0
2406 540 y Fo(isockinet)e(is)h(\(sb\))240 618 y Fn(constructs)c(a)f
2407 Fo(isockinet)g Fn(ob)s(ject)h Fo(is)f Fn(whose)h Fo(sockinetbuf)f
2408 Fn(is)h Fo(sb)p Fn(.)18 b Fo(sb)11 b Fn(m)o(ust)g(b)q(e)g(in)h
2409 Fi(inet)h Fn(domain.)0 696 y Fo(isockinet)h(is)h(\(sinp\))240
2410 773 y Fn(constructs)g(a)g Fo(isockinet)f Fn(ob)s(ject)g Fo(is)h
2411 Fn(whose)g Fo(sockinetbuf)f Fn(is)i Fo(sinp)p Fn(.)0 851 y
2412 Fo(sinp)f(=)g(is.rdbuf)f(\(\))240 928 y Fn(returns)h(a)g(p)q(oin)o(ter)h(to)e
2413 (the)h Fo(sockinetbuf)f Fn(of)h Fo(isockinet)f Fn(ob)s(ject)g
2414 Fo(is)p Fn(.)0 1006 y Fo(isockinet::operator)f(->)240 1083
2415 y Fn(returns)h Fo(sockinetbuf)e Fn(of)i Fo(sockinet)e Fn(so)i(that)f(the)h
2416 Fo(sockinet)f Fn(ob)s(ject)g(acts)h(as)f(a)h(smart)e(p)q(oin)o(ter)240
2417 1146 y(to)j Fo(sockinetbuf)p Fn(.)551 1223 y Fo(is->localhost)22
2418 b(\(\);)h(//)h(same)f(as)h(is.rdbuf)f(\(\)->localhost)f(\(\);)0
2419 1456 y Fg(8.2.2)30 b(ioso)r(c)n(kinet)15 b(examples)62 1596
2420 y Fn(The)f(\014rst)g(pair)g(of)f(examples)i(demonstrates)e(datagram)f(so)q(c)
2421 o(k)o(et)i(connections)h(in)f(the)g Fi(inet)i Fn(domain.)k(First,)0
2422 1658 y Fo(tdinread)g Fn(prin)o(ts)h(its)g(lo)q(cal)h(host)e(and)h(lo)q(cal)h
2423 (p)q(ort)f(on)g(stdout)f(and)h(w)o(aits)f(for)h(input)h(in)f(the)g
2424 (connection.)0 1721 y Fo(tdinwrite)c Fn(is)h(started)f(with)i(the)f(lo)q(cal)
2425 h(host)e(and)h(lo)q(cal)i(p)q(ort)d(of)h Fo(tdinread)f Fn(as)g(argumen)o(ts.)
2426 27 b(It)18 b(sends)h(the)0 1783 y(string)c Fo(")p Fn(Ho)o(w)g(do)g(y)o(e)g
2427 (do!)p Fo(")f Fn(to)h Fo(tdinread)f Fn(whic)o(h)i(in)g(turn)f(reads)g(the)h
2428 (string)f(and)g(prin)o(ts)h(on)f(its)g(stdout.)120 1923 y Fo(//)24
2429 b(tdinread.cc)120 1973 y(#include)f(<sockinet.h>)120 2072 y(int)g(main)h
2430 (\(\))120 2122 y({)215 2172 y(char)g(buf[256];)215 2222 y(isockinet)f(is)h
2431 (\(sockbuf::sock_dgram\);)215 2271 y(is->bind)f(\(\);)215 2371
2432 y(cout)h(<<)f(is->localhost\(\))f(<<)i(')f(')h(<<)g(is->localport\(\))e(<<)h
2433 (endl;)215 2471 y(is.getline)g(\(buf\);)215 2521 y(cout)h(<<)f(buf)h(<<)f
2434 (endl;)215 2620 y(return)g(0;)120 2670 y(})p eop
2435 %%Page: 30 32
2436 bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2437 b(30)120 183 y Fo(//)24 b(tdinwrite.cc--tdinwrite)c(hostname)j(portno)120
2438 233 y(#include)g(<sockinet.h>)120 283 y(#include)g(<stdlib.h>)120
2439 382 y(int)g(main)h(\(int)f(ac,)h(char**)f(av\))120 432 y({)215
2440 482 y(osockinet)g(os)h(\(sockbuf::sock_dgram\);)215 532 y(os->connect)f
2441 (\(av[1],)g(atoi\(av[2]\)\);)215 582 y(os)h(<<)g("How)f(do)h(ye)f(do!")g(<<)h
2442 (endl;)215 632 y(return)f(0;)120 681 y(})62 933 y Fn(The)15
2443 b(next)f(example)h(comm)o(unicates)g(with)g(an)f(nn)o(tp)g(serv)o(er)g
2444 (through)g(a)g Fo(sockbuf::sock_stream)e Fn(so)q(c)o(k)o(et)0
2445 995 y(connection)k(in)h Fi(inet)g Fn(domain.)k(After)15 b(establishing)i(a)e
2446 (connection)i(to)d(the)i(nn)o(tp)f(serv)o(er,)g(it)h(sends)g(a)f
2447 Fo(")p Fn(HELP)p Fo(")0 1057 y Fn(command)g(and)g(gets)g(bac)o(k)g(the)g
2448 (HELP)h(message)f(b)q(efore)g(sending)i(the)e Fo(")p Fn(QUIT)p
2449 Fo(")g Fn(command.)120 1214 y Fo(//)24 b(tnntp.cc)120 1264
2450 y(#include)f(<sockinet.h>)120 1363 y(int)g(main)h(\(\))120
2451 1413 y({)215 1463 y(char)48 b(buf[1024];)215 1513 y(iosockinet)23
2452 b(io)h(\(sockbuf::sock_stream\);)215 1563 y(io->connect)f
2453 (\("murdoch.acc.virginia.ed)o(u",)e("nntp",)i("tcp"\);)215
2454 1613 y(io.getline)g(\(buf,)g(1024\);)g(cout)g(<<)h(buf)g(<<)f(endl;)215
2455 1662 y(io)h(<<)g("HELP\\r\\n")e(<<)i(flush;)215 1712 y(io.getline)f(\(buf,)g
2456 (1024\);)g(cout)g(<<)h(buf)g(<<)f(endl;)215 1762 y(while)h(\(io.getline)e
2457 (\(buf,)h(1024\)\))311 1812 y(if)g(\(buf[0])g(==)h('.')f(&&)h(buf[1])f(==)h
2458 ('\\r'\))f(break;)311 1862 y(else)g(if)h(\(buf[0])f(==)g('.')h(&&)f(buf[1])g
2459 (==)h('.'\))f(cout)h(<<)f(buf+1)g(<<)h(endl;)311 1911 y(else)f(cout)h(<<)f
2460 (buf)h(<<)f(endl;)215 1961 y(io)h(<<)g("QUIT\\r\\n")e(<<)i(flush;)215
2461 2011 y(io.getline)f(\(buf,)g(1024\);)g(cout)g(<<)h(buf)g(<<)f(endl;)215
2462 2061 y(return)g(0;)120 2111 y(})0 2513 y Fm(8.3)33 b(ioso)r(c)n(kunix)16
2463 b(Classes)62 2670 y Fn(W)l(e)g(discuss)g(only)g Fo(isockunix)d
2464 Fn(here.)21 b Fo(osockunix)14 b Fn(and)h Fo(iosockunix)f Fn(are)h(similar.)p
2465 eop
2466 %%Page: 31 33
2467 bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2468 b(31)0 183 y Fg(8.3.1)30 b(iso)r(c)n(kunix)16 b(class)62 323
2469 y Fo(isockunix)i Fn(is)h(used)h(to)e(handle)i(in)o(terpro)q(cess)f(comm)o
2470 (unication)h(in)f Fi(unix)k Fn(domain.)32 b(It)19 b(is)g(deriv)o(ed)h(from)0
2471 385 y Fo(isockstream)11 b Fn(class)i(and)f(it)h(uses)g(a)f
2472 Fo(sockunixbuf)e Fn(as)j(its)f(stream)g(bu\013er.)19 b(See)13
2473 b(Section)g(8.1.3)e([ioso)q(c)o(kstream],)0 447 y(page)16 b(27,)g(for)g(more)
2474 g(details)i(on)e Fo(isockstream)p Fn(.)23 b(See)17 b(Chapter)f(6)h([so)q(c)o
2475 (kunixbuf)g(Class],)f(page)h(21,)f(for)g(infor-)0 509 y(mation)f(on)g
2476 Fo(sockunixbuf)p Fn(.)62 649 y(In)h(what)f(follo)o(ws,)25 788
2477 y Fl(\000)30 b Fo(ty)17 b Fn(is)g(a)g Fo(sockbuf::type)e Fn(and)j(m)o(ust)e
2478 (b)q(e)i(one)f(of)g Fo(sockbuf::sock_stream)p Fn(,)d Fo(sockbuf::sock_dgram)p
2479 Fn(,)90 850 y Fo(sockbuf::sock_raw)p Fn(,)e Fo(sockbuf::sock_rdm)p
2480 Fn(,)h(and)i Fo(sockbuf::sock_seqpacket)25 927 y Fl(\000)30
2481 b Fo(proto)14 b Fn(denotes)i(the)f(proto)q(col)g(n)o(um)o(b)q(er)h(and)f(is)h
2482 (of)f(t)o(yp)q(e)g(in)o(t)25 1004 y Fl(\000)30 b Fo(sb)15 b
2483 Fn(is)h(a)e Fo(sockbuf)h Fn(ob)s(ject)f(and)i(m)o(ust)e(b)q(e)i(in)g
2484 Fi(unix)k Fn(domain)25 1081 y Fl(\000)30 b Fo(sinp)15 b Fn(is)g(a)g(p)q(oin)o
2485 (ter)h(to)e(an)i(ob)s(ject)e(of)h Fo(sockunixbuf)0 1221 y(isockunix)f(is)h
2486 (\(ty,)f(proto\))240 1298 y Fn(constructs)k(an)g Fo(isockunix)g
2487 Fn(ob)s(ject)g Fo(is)g Fn(whose)g Fo(sockunixbuf)f Fn(bu\013er)h(is)h(of)g
2488 (the)f(t)o(yp)q(e)h Fo(ty)f Fn(and)240 1360 y(has)d(the)g(proto)q(col)h(n)o
2489 (um)o(b)q(er)f Fo(proto)p Fn(.)k(The)d(default)f(proto)q(col)h(n)o(um)o(b)q
2490 (er)f(is)h(0.)0 1437 y Fo(isockunix)e(is)h(\(sb\))240 1514
2491 y Fn(constructs)22 b(a)g Fo(isockunix)f Fn(ob)s(ject)h Fo(is)g
2492 Fn(whose)h Fo(sockunixbuf)d Fn(is)j Fo(sb)p Fn(.)42 b Fo(sb)22
2493 b Fn(m)o(ust)g(b)q(e)h(in)g Fi(unix)240 1576 y Fn(domain.)0
2494 1653 y Fo(isockunix)14 b(is)h(\(sinp\))240 1730 y Fn(constructs)g(a)g
2495 Fo(isockunix)f Fn(ob)s(ject)g Fo(is)h Fn(whose)g Fo(sockunixbuf)f
2496 Fn(is)i Fo(sinp)p Fn(.)0 1807 y Fo(sinp)f(=)g(is.rdbuf)f(\(\))240
2497 1884 y Fn(returns)h(a)g(p)q(oin)o(ter)h(to)e(the)h Fo(sockunixbuf)f
2498 Fn(of)h Fo(isockunix)f Fn(ob)s(ject)g Fo(is)p Fn(.)0 1961 y
2499 Fo(isockunix::operator)f(->)240 2038 y Fn(returns)h Fo(sockunixbuf)e
2500 Fn(of)i Fo(sockunix)e Fn(so)i(that)f(the)h Fo(sockunix)f Fn(ob)s(ject)g(acts)
2501 h(as)f(a)h(smart)e(p)q(oin)o(ter)240 2101 y(to)j Fo(sockunixbuf)p
2502 Fn(.)551 2178 y Fo(is->localhost)22 b(\(\);)h(//)h(same)f(as)h(is.rdbuf)f
2503 (\(\)->localhost)f(\(\);)0 2406 y Fg(8.3.2)30 b(ioso)r(c)n(kunix)16
2504 b(examples)62 2545 y Fo(tsunread)h Fn(listens)j(for)d(connections.)30
2505 b(When)18 b Fo(tsunwrite)f Fn(requests)h(connection,)h Fo(tsunread)e
2506 Fn(accepts)i(it)0 2608 y(and)14 b(w)o(aits)e(for)h(input.)20
2507 b Fo(tsunwrite)12 b Fn(sends)i(the)g(string)f Fo(")p Fn(Hello!!!)p
2508 Fo(")g Fn(to)g Fo(tsunread)p Fn(.)18 b Fo(tsunread)12 b Fn(reads)i(the)f
2509 (string)0 2670 y(sen)o(t)i(b)o(y)g Fo(tsunwrite)f Fn(and)h(prin)o(ts)h(on)f
2510 (its)g(stdout.)p eop
2511 %%Page: 32 34
2512 bop 0 -58 a Fn(Chapter)15 b(8:)k(so)q(c)o(kstream)c(Classes)1296
2513 b(32)120 183 y Fo(//)24 b(tsunread.cc)120 233 y(#include)f(<sockunix.h>)120
2514 283 y(#include)g(<unistd.h>)120 382 y(int)g(main)h(\(\))120
2515 432 y({)215 482 y(sockunixbuf)f(sunb)g(\(sockbuf::sock_stream\);)215
2516 532 y(sunb.bind)g(\("/tmp/socket+-"\);)215 582 y(sunb.listen)g(\(2\);)215
2517 632 y(isockunix)g(is)h(=)f(sunb.accept)g(\(\);)215 681 y(char)h(buf[32];)215
2518 731 y(is)g(>>)g(buf;)f(cout)g(<<)h(buf)f(<<)h(endl;)215 781
2519 y(unlink)f(\("/tmp/socket+-"\);)215 831 y(return)g(0;)120 881
2520 y(})120 1018 y(//)h(tsunwrite.cc)120 1067 y(#include)f(<sockunix.h>)120
2521 1117 y(int)g(main)h(\(\))120 1167 y({)215 1217 y(osockunix)f(os)h
2522 (\(sockbuf::sock_stream\);)215 1267 y(os->connect)f(\("/tmp/socket++"\);)215
2523 1316 y(os)h(<<)g("Hello!!!\\n")e(<<)h(flush;)215 1366 y(return)g(0;)120
2524 1416 y(})p eop
2525 %%Page: 33 35
2526 bop 0 -58 a Fn(Chapter)15 b(9:)k(pip)q(estream)d(Classes)1297
2527 b(33)0 183 y Fk(9)41 b(pip)r(estream)14 b(Classes)62 370 y
2528 Fo(pipestream)e Fn(stream)h(classes)h(pro)o(vide)f(the)h(services)g(of)f(the)
2529 g Fi(UNIX)19 b Fn(system)13 b(calls)h Fo(pipe)f Fn(and)g Fo(socketpair)0
2530 432 y Fn(and)g(the)g(C)g(library)h(function)g Fo(popen)p Fn(.)k
2531 Fo(ipipestream)p Fn(,)12 b Fo(opipestream)p Fn(,)f(and)i Fo(iopipestream)f
2532 Fn(are)g(obtained)i(b)o(y)0 495 y(simply)k(deriving)h(from)d
2533 Fo(isockstream)p Fn(,)f Fo(osockstream)h Fn(and)h Fo(iosockstream)e
2534 Fn(resp)q(ectiv)o(ely)l(.)27 b(See)18 b(Chapter)e(8)0 557 y([so)q(c)o
2535 (kstream)e(Classes],)g(page)h(26)g(for)g(details.)62 694 y(In)h(what)f(follo)
2536 o(ws,)25 831 y Fl(\000)30 b Fo(ip)15 b Fn(is)h(an)f Fo(ipipestream)e
2537 Fn(ob)s(ject)25 905 y Fl(\000)30 b Fo(op)15 b Fn(is)h(an)f
2538 Fo(opipestream)e Fn(ob)s(ject)25 980 y Fl(\000)30 b Fo(iop)15
2539 b Fn(is)g(an)h Fo(iopipestream)d Fn(ob)s(ject)25 1055 y Fl(\000)30
2540 b Fo(cmd)15 b Fn(is)g(a)g(c)o(har*)g(denoting)h(an)f(executable)h(lik)o(e)h
2541 Fo(")p Fn(w)o(c)p Fo(")25 1130 y Fl(\000)30 b Fo(ty)15 b Fn(is)h(of)e(t)o(yp)
2542 q(e)i Fo(sockbuf::type)d Fn(indicating)k(the)e(t)o(yp)q(e)h(of)e(the)i
2543 (connection)25 1204 y Fl(\000)30 b Fo(proto)14 b Fn(is)i(an)f
2544 Fo(int)g Fn(denoting)h(a)f(proto)q(col)g(n)o(um)o(b)q(er)0
2545 1341 y Fo(ipipestream)f(ip\(cmd\))240 1416 y Fn(construct)22
2546 b(an)f Fo(ipipestream)g Fn(ob)s(ject)g Fo(ip)g Fn(suc)o(h)h(that)g(the)f
2547 (output)h(of)f(the)h(command)g Fo(cmd)f Fn(is)240 1478 y(a)o(v)m(ailable)c
2548 (as)e(input)h(through)f Fo(ip)p Fn(.)0 1553 y Fo(opipestream)f(op\(cmd\))240
2549 1628 y Fn(construct)h(an)g Fo(opipestream)e Fn(ob)s(ject)h
2550 Fo(op)h Fn(suc)o(h)g(that)f(the)i(input)f(for)g(the)g(command)g
2551 Fo(cmd)f Fn(can)h(b)q(e)240 1690 y(send)h(through)f Fo(op)p
2552 Fn(.)0 1765 y Fo(iopipestream)f(iop\(cmd\))240 1839 y Fn(construct)22
2553 b(an)f Fo(iopipestream)f Fn(ob)s(ject)i Fo(iop)f Fn(suc)o(h)h(that)f(the)h
2554 (input)h(and)f(the)g(output)g(to)f(the)240 1902 y(command)15
2555 b Fo(cmd)g Fn(can)g(b)q(e)h(sen)o(t)f(and)g(receiv)o(ed)i(through)e
2556 Fo(iop)p Fn(.)0 1976 y Fo(iopipestream)f(iop\(ty,)g(proto\))240
2557 2051 y Fn(construct)20 b(a)h Fo(iopipestream)e Fn(ob)s(ject)h
2558 Fo(iop)g Fn(whose)h(so)q(c)o(k)o(et)f(is)h(a)g(so)q(c)o(k)o(etpair)f(of)g(t)o
2559 (yp)q(e)h Fo(ty)g Fn(with)240 2113 y(proto)q(col)15 b(n)o(um)o(b)q(er)g
2560 Fo(proto)p Fn(.)k Fo(ty)c Fn(defaults)h(to)e Fo(sockbuf::sock_stream)e
2561 Fn(and)k Fo(proto)e Fn(defaults)i(to)240 2176 y(0.)k(Ob)s(ject)15
2562 b Fo(iop)g Fn(can)g(b)q(e)h(used)g(either)f(as)g(a)g Fo(pipe)g
2563 Fn(or)f(as)h(a)g Fo(socketpair)p Fn(.)0 2250 y Fo(iop.pid)f(\(\))240
2564 2325 y Fn(return)g(the)g(pro)q(cess)g(id)h(of)f(the)g(c)o(hild)h(if)g(the)f
2565 (curren)o(t)g(pro)q(cess)g(is)g(the)g(paren)o(t)g(or)g(return)f(0.)20
2566 b(If)14 b(the)240 2387 y(pro)q(cess)h(has)h(not)e(fork)o(ed)h(y)o(et,)f
2567 (return)i(-1.)0 2462 y Fo(iopipestream::fork)d(\(\))240 2537
2568 y(fork\(\))k Fn(is)i(a)e(static)h(function)h(of)e(class)i Fo(iopipestream)p
2569 Fn(.)26 b Fo(fork\(\))17 b Fn(forks)h(the)g(curren)o(t)g(pro)q(cess)240
2570 2599 y(and)13 b(appropriately)h(sets)e(the)h Fo(cpid)f Fn(\014eld)i(of)f(the)
2571 g Fo(iopipestream)e Fn(ob)s(jects)h(that)g(ha)o(v)o(e)h(not)f(fork)o(ed)240
2572 2661 y(y)o(et.)p eop
2573 %%Page: 34 36
2574 bop 0 -58 a Fn(Chapter)15 b(9:)k(pip)q(estream)d(Classes)1297
2575 b(34)0 183 y Fm(9.1)33 b(pip)r(estream)15 b(as)g(pip)r(e)62
2576 321 y Fo(pipe)g Fn(is)h(used)f(to)g(comm)o(unicate)g(b)q(et)o(w)o(een)h
2577 (paren)o(t)f(and)g(c)o(hild)i(pro)q(cesses)f(in)g(the)f Fi(unix)k
2578 Fn(domain.)62 458 y(The)d(follo)o(wing)h(example)g(illustrates)g(ho)o(w)e(to)
2579 h(use)g Fo(iopipestream)e Fn(class)j(as)e(a)h Fo(pipe)p Fn(.)22
2580 b(The)16 b(paren)o(t)f(sends)0 521 y(the)g(string)h Fo(")p
2581 Fn(I)f(am)g(the)h(paren)o(t)p Fo(")f Fn(to)f(the)i(c)o(hild)h(and)e(receiv)o
2582 (es)h(the)g(string)f Fo(")p Fn(I)h(am)f(the)g(c)o(hild)p Fo(")i
2583 Fn(from)e(c)o(hild.)22 b(The)0 583 y(c)o(hild,)e(in)e(turn,)g(receiv)o(es)h
2584 (the)f(string)g Fo(")p Fn(I)g(am)f(the)h(paren)o(t)p Fo(")f
2585 Fn(from)g(paren)o(t)h(and)g(sends)g(the)g(string)f Fo(")p Fn(I)i(am)e(the)0
2586 645 y(c)o(hild)p Fo(")j Fn(to)e(the)h(paren)o(t.)30 b(Note)18
2587 b(the)h(same)g Fo(iopipestream)e Fn(ob)s(ject)h(is)h(used)g(for)f(input)i
2588 (and)f(output)f(in)i(eac)o(h)0 708 y(pro)q(cess.)120 845 y
2589 Fo(#include)j(<pipestream.h>)120 945 y(int)g(main\(\))120 995
2590 y({)311 1044 y(iopipestream)f(p;)311 1094 y(if)h(\()h(p.fork\(\))f(\))h({)502
2591 1144 y(char)f(buf[128];)502 1194 y(p)h(<<)f("I)h(am)f(the)h(parent\\n")e(<<)i
2592 (flush;)502 1244 y(cout)f(<<)h("parent:)e(";)502 1293 y(while\(p)h(>>)g
2593 (buf\))693 1343 y(cout)g(<<)h(buf)f(<<)h(')f(';)502 1393 y(cout)g(<<)h(endl;)
2594 311 1443 y(}else)f({)502 1493 y(char)g(buf[128];)502 1542 y(p.getline\(buf,)f
2595 (127\);)502 1592 y(cout)h(<<)h("child:)f(")g(<<)h(buf)f(<<)h(endl;)502
2596 1642 y(p)g(<<)f("I)h(am)f(the)h(child\\n")f(<<)g(flush;)311
2597 1692 y(})311 1742 y(return)g(0;)120 1792 y(})0 2021 y Fm(9.2)33
2598 b(pip)r(estream)15 b(as)g(so)r(c)n(k)n(etpair)62 2159 y Fn(Lik)o(e)23
2599 b(pip)q(es,)j(so)q(c)o(k)o(etpairs)c(also)g(allo)o(w)g(comm)o(unication)h(b)q
2600 (et)o(w)o(een)g(paren)o(t)f(and)g(c)o(hild)i(pro)q(cesses.)42
2601 b(But)0 2221 y(so)q(c)o(k)o(etpairs)15 b(are)f(more)h(\015exible)i(than)e
2602 (pip)q(es)h(in)g(the)f(sense)g(that)f(they)h(let)h(the)f(users)g(c)o(ho)q
2603 (ose)g(the)g(so)q(c)o(k)o(et)f(t)o(yp)q(e)0 2283 y(and)h(proto)q(col.)62
2604 2421 y(The)f(follo)o(wing)h(example)g(illustrates)g(the)f(use)g(of)g
2605 Fo(iopipestream)e Fn(class)j(as)e(a)h Fo(socketpair)e Fn(whose)i(t)o(yp)q(e)g
2606 (is)0 2483 y Fo(sockbuf::sock_dgram)p Fn(.)i(The)d(paren)o(t)f(sends)h(the)f
2607 (string)h Fo(")p Fn(I)f(am)g(the)h(paren)o(t)p Fo(")f Fn(to)f(the)i(c)o(hild)
2608 h(and)f(receiv)o(es)g(the)0 2545 y(string)h Fo(")p Fn(I)h(am)f(the)g(c)o
2609 (hild)p Fo(")i Fn(from)e(the)g(c)o(hild.)21 b(The)15 b(c)o(hild,)h(in)f
2610 (turn,)f(receiv)o(es)h(and)g(sends)g(the)f(strings)g Fo(")p
2611 Fn(I)h(am)f(the)0 2608 y(paren)o(t)p Fo(")i Fn(and)g Fo(")p
2612 Fn(I)g(am)g(the)g(c)o(hild)p Fo(")i Fn(resp)q(ectiv)o(ely)g(from)d(and)i(to)e
2613 (the)i(paren)o(t.)22 b(Note)16 b(in)h(the)f(follo)o(wing)h(example)0
2614 2670 y(that)d(the)i(same)f Fo(iopipestream)e Fn(ob)s(ject)i(is)h(used)f(for)g
2615 (b)q(oth)g(the)g(input)i(and)e(the)g(output)g(in)h(eac)o(h)g(pro)q(cess.)p
2616 eop
2617 %%Page: 35 37
2618 bop 0 -58 a Fn(Chapter)15 b(9:)k(pip)q(estream)d(Classes)1297
2619 b(35)120 183 y Fo(#include)23 b(<pipestream.h>)120 283 y(int)g(main\(\))120
2620 333 y({)311 382 y(iopipestream)f(p\(sockbuf::sock_dgram\);)311
2621 432 y(if)h(\()h(iopipestream::fork\(\))d(\))j({)502 482 y(char)f(buf[128];)
2622 502 532 y(p)h(<<)f("I)h(am)f(the)h(parent\\n")e(<<)i(flush;)502
2623 582 y(p.getline\(buf,)e(127\);)502 632 y(cout)h(<<)h("parent:)e(")i(<<)g(buf)
2624 f(<<)h(endl;)311 681 y(}else)f({)502 731 y(char)g(buf[128];)502
2625 781 y(p.getline\(buf,)f(127\);)502 831 y(cout)h(<<)h("child:)f(")g(<<)h(buf)f
2626 (<<)h(endl;)502 881 y(p)g(<<)f("I)h(am)f(the)h(child\\n")f(<<)g(flush;)311
2627 930 y(})311 980 y(return)g(0;)120 1030 y(})0 1276 y Fm(9.3)33
2628 b(pip)r(estream)15 b(as)g(p)r(op)r(en)62 1415 y Fo(popen)c
2629 Fn(is)h(used)f(to)g(call)h(an)g(executable)g(and)f(send)h(inputs)h(and)e
2630 (outputs)g(to)g(that)f(executable.)20 b(F)l(or)10 b(example,)0
2631 1477 y(the)15 b(follo)o(wing)h(example)g(executes)g Fo(")p
2632 Fn(/bin/date)p Fo(")p Fn(,)f(gets)g(its)g(output,)g(and)g(prin)o(ts)g(it)h
2633 (to)f(stdout.)120 1617 y Fo(#include)23 b(<pipestream.h>)120
2634 1716 y(int)g(main)h(\(\))120 1766 y({)215 1816 y(char)g(buf[128];)215
2635 1866 y(ipipestream)f(p\("/bin/date"\);)215 1965 y(p.getline)g(\(buf,)g
2636 (127\);)215 2015 y(cout)h(<<)f(buf)h(<<)f(endl;)215 2065 y(return)g(0;)120
2637 2115 y(})62 2331 y Fn(Here)16 b(is)f(an)h(example)g(that)e(prin)o(ts)h
2638 Fo(")p Fn(Hello)i(W)l(orld!!)p Fo(")d Fn(on)i(stdout.)j(It)c(uses)h
2639 Fo(opipestream)d Fn(ob)s(ject.)120 2471 y Fo(#include)23 b(<pipestream.h>)120
2640 2570 y(int)g(main)h(\(\))120 2620 y({)215 2670 y(opipestream)f
2641 (p\("/bin/cat"\);)p eop
2642 %%Page: 36 38
2643 bop 0 -58 a Fn(Chapter)15 b(9:)k(pip)q(estream)d(Classes)1297
2644 b(36)215 183 y Fo(p)24 b(<<)g("Hello)f(World!!\\n")f(<<)i(endl;)215
2645 233 y(return)f(0;)120 283 y(})62 495 y Fn(The)16 b(follo)o(wing)g(example)g
2646 (illustrates)g(the)f(use)h(of)e Fo(iopipestream)g Fn(for)h(b)q(oth)g(input)h
2647 (and)f(output.)120 632 y Fo(#include)23 b(<pipestream.h>)120
2648 731 y(int)g(main\(\))120 781 y({)311 831 y(char)g(buf[128];)311
2649 881 y(iopipestream)f(p\("lpc"\);)311 930 y(p)i(<<)f("help\\nquit\\n")f(<<)i
2650 (flush;)311 980 y(while)f(\()h(p.getline\(buf,)e(127\))h(\))h(cout)f(<<)h
2651 (buf)f(<<)h(endl;)311 1030 y(return)f(0;)120 1080 y(})p eop
2652 %%Page: 37 39
2653 bop 0 -58 a Fn(Chapter)15 b(10:)k(F)l(ork)c(Class)1440 b(37)0
2654 183 y Fk(10)41 b(F)-7 b(ork)15 b(Class)62 370 y Fn(Y)l(ou)h(can)f(e\013ectiv)
2655 o(ely)i(use)f(the)f Fo(Fork)g Fn(wrapp)q(er)g(class)h(to)f(create)g(c)o(hild)
2656 i(pro)q(cesses.)k(Y)l(ou)16 b(can)f(use)h(the)g Fo(Fork)0 432
2657 y Fn(class,)f(instead)h(of)f(directly)h(using)g(the)g(system)e(call)j(fork)d
2658 (\(\),)g(if)i(y)o(ou)f(desire)h(the)f(follo)o(wing:)37 569
2659 y Fl(\017)30 b Fn(Av)o(oid)16 b(zom)o(bie)f(pro)q(cesses)37
2660 644 y Fl(\017)30 b Fn(Optionally)17 b(kill)g(c)o(hild)g(pro)q(cesses)e(when)h
2661 (the)f(paren)o(t)g(pro)q(cess)h(terminates.)37 719 y Fl(\017)30
2662 b Fn(W)l(an)o(t)14 b(to)h(kno)o(w)g(the)g(reason)g(for)f(abnormal)i
2663 (termination)f(of)g(c)o(hild)i(pro)q(cesses.)62 930 y(In)f(what)f(follo)o
2664 (ws,)25 1067 y Fl(\000)30 b Fo(killchild)14 b Fn(is)i(an)f(in)o(teger.)25
2665 1142 y Fl(\000)30 b Fo(reason)14 b Fn(is)i(an)f(in)o(teger.)25
2666 1217 y Fl(\000)30 b Fo(signo)14 b Fn(is)i(a)f(v)m(alid)i(signal.)25
2667 1291 y Fl(\000)30 b Fo(f)15 b Fn(is)h(a)f Fo(Fork)f Fn(ob)s(ject.)0
2668 1428 y Fo(Fork)h(f\(killchild,)e(reason\))240 1503 y Fn(constructs)i(a)g
2669 Fo(Fork)g Fn(ob)s(ject)f Fo(f)p Fn(.)20 b(The)c(constructor)e(creates)h(a)g
2670 (c)o(hild)i(pro)q(cess.)j(When)c(the)f(paren)o(t)240 1565 y(pro)q(cess)h
2671 (terminates,)g(it)h(will)g(kill)h(the)e(c)o(hild)i(pro)q(cess)e(if)h
2672 Fo(killchild)e Fn(is)h(not)g(0.)22 b(Otherwise,)17 b(the)240
2673 1628 y(paren)o(t)c(pro)q(cess)g(will)i(w)o(ait)d(un)o(til)j(all)f(its)f(c)o
2674 (hild)i(pro)q(cesses)e(die.)20 b(If)14 b Fo(reason)e Fn(is)i(not)e(0,)h(then)
2675 g(it)h(giv)o(es)240 1690 y(the)h(reason)g(for)g(a)g(c)o(hild)h(pro)q(cess's)f
2676 (death)h(on)f(the)g(stderr.)0 1765 y Fo(f.is_child)f(\(\))240
2677 1839 y Fn(returns)j(1)f(if)i(the)f(curren)o(t)g(pro)q(cess)g(is)g(the)g(c)o
2678 (hild)i(pro)q(cess)e(follo)o(wing)h(the)f(fork)f(in)i(constructing)240
2679 1902 y(the)d Fo(Fork)g Fn(ob)s(ject)g Fo(f)p Fn(.)k(Otherwise,)d(return)f(0.)
2680 0 1976 y Fo(f.is_parent)f(\(\))240 2051 y Fn(returns)g(1)h(if)g(the)f(curren)
2681 o(t)h(pro)q(cess)g(is)g(the)f(paren)o(t)h(pro)q(cess)f(follo)o(wing)i(the)e
2682 (fork)g(in)i(constructing)240 2113 y(the)f Fo(Fork)g Fn(ob)s(ject)g
2683 Fo(f)p Fn(.)k(Otherwise,)d(return)f(0.)0 2188 y Fo(f.process_id)f(\(\))240
2684 2263 y Fn(returns)h(the)f(pro)q(cess)h(id)h(of)e(the)h(c)o(hild)h(pro)q
2685 (cess,)f(if)g(the)g(curren)o(t)g(pro)q(cess)g(is)g(the)g(paren)o(t)f(pro)q
2686 (cess.)240 2325 y(Returns)i(0,)e(if)i(the)f(curren)o(t)g(pro)q(cess)h(is)f
2687 (the)h(c)o(hild)h(pro)q(cess.)j(Returns)15 b(-1,)g(if)h(fork)e(failed.)0
2688 2400 y Fo(Fork::suicide_signal)e(\(signo\))240 2474 y Fn(is)k(a)f(static)h
2689 (function.)22 b(Up)q(on)16 b(the)f(reciept)i(of)e(the)h(signal)g
2690 Fo(signo)p Fn(,)f(the)h(curren)o(t)f(pro)q(cess)h(will)h(kill)240
2691 2537 y(all)e(its)f(c)o(hild)i(pro)q(cesses)e(created)g(through)g
2692 Fo(Fork::Fork\(int,)f(int\))h Fn(irresp)q(ectiv)o(e)h(of)f(the)g(v)m(alue)240
2693 2599 y(of)h(the)h Fo(killchild)f Fn(\015ag)g(used)h(in)h(the)f(construction)g
2694 (of)f(the)h Fo(Fork)f Fn(ob)s(jects.)21 b Fo(signo)15 b Fn(defaults)i(to)240
2695 2661 y(SIGTERM)e(signal.)p eop
2696 %%Page: 38 40
2697 bop 0 -58 a Fn(Chapter)15 b(10:)k(F)l(ork)c(Class)1440 b(38)0
2698 183 y Fm(10.1)32 b(F)-6 b(ork)17 b(Example)62 336 y Fn(The)g(follo)o(wing)g
2699 (example)g(illustrates)h(the)e(use)h(of)f(the)h Fo(Fork)e Fn(class)i(to)f
2700 (create)g(c)o(hild)i(pro)q(cesses.)24 b(First,)16 b(w)o(e)0
2701 398 y(set)e(up)i Fi(SIGTERM)j Fn(signal)d(handler)g(to)e(kill)i(all)g(the)f
2702 (c)o(hild)h(pro)q(cesses,)f(b)o(y)g(callling)i Fo(Fork::suicide_signal)0
2703 460 y(\(\))p Fn(.)j(Second,)15 b(w)o(e)g(create)g(sev)o(eral)g(c)o(hild)i
2704 (and)f(grandc)o(hild)g(pro)q(cesses.)62 612 y(Y)l(ou)g(can)f(kill)j(the)d
2705 (top)g(most)g(paren)o(t)g(pro)q(cess)g(and)h(all)g(its)g(c)o(hildren)h(b)o(y)
2706 e(sending)i(a)e Fi(SIGTERM)20 b Fn(signal)d(to)0 675 y(the)e(top)g(most)f
2707 (paren)o(t)h(pro)q(cess.)120 827 y Fo(//)24 b(tfork.C)120 877
2708 y(#include)f(<iostream.h>)120 927 y(#include)g(<Fork.h>)120
2709 1026 y(static)g(void)g(print)h(\(char*)f(name,)g(pid_t)g(child\))120
2710 1076 y({)168 1126 y(if)g(\(child\))215 1176 y(cerr)h(<<)f("Parent)g(")h(<<)g
2711 (getppid)e(\(\))i(<<)g(";)f(")263 1225 y(<<)h(name)f(<<)h(')f(')h(<<)g
2712 (getpid)f(\(\))g(<<)h(";)g(Child)f(")g(<<)h(child)f(<<)h(";\\n";)120
2713 1275 y(})120 1375 y(int)f(main)h(\(int)f(ac,)h(char**)f(av\))120
2714 1425 y({)168 1474 y(Fork::suicide_signal)e(\(SIGTERM\);)168
2715 1574 y(Fork)i(a\(0,)g(1\);)168 1674 y(print)g(\("a",)g(a.process_id)f
2716 (\(\)\);)168 1773 y(if)h(\(a.is_child)g(\(\)\))g({)215 1823
2717 y(sleep)h(\(3000\);)168 1873 y(})f(else)h(if)f(\(a.is_parent)g(\(\)\))g({)215
2718 1923 y(Fork)h(b)f(\(1,)h(1\);)215 1973 y(print)g(\("b",)f(b.process_id)f
2719 (\(\)\);)215 2022 y({)263 2072 y(Fork)h(c)h(\(b.is_parent)e(\(\),)i(1\);)263
2720 2122 y(if)g(\(b.is_child)e(\(\)\))120 2172 y(print)h(\("cchild",)g
2721 (c.process_id)f(\(\)\);)263 2222 y(else)120 2271 y(print)h(\("cparent",)g
2722 (c.process_id)f(\(\)\);)263 2321 y(if)i(\(c.is_child)e(\(\)\))i({)120
2723 2371 y(sleep)f(\(3000\);)120 2421 y(return)g(0;)263 2471 y(})215
2724 2521 y(})215 2570 y(if)h(\(b.is_child)e(\(\)\))i({)263 2620
2725 y(sleep)f(\(120\);)263 2670 y(return)g(0x8;)p eop
2726 %%Page: 39 41
2727 bop 0 -58 a Fn(Chapter)15 b(10:)k(F)l(ork)c(Class)1440 b(39)215
2728 183 y Fo(})168 233 y(})168 333 y(return)23 b(0;)120 382 y(})p
2729 eop
2730 %%Page: 40 42
2731 bop 0 -58 a Fn(Chapter)15 b(11:)k(Class)c(proto)q(col)1368
2732 b(40)0 183 y Fk(11)41 b(Class)15 b(proto)r(col)62 382 y Fo(protocol)i
2733 Fn(class)h(is)h(the)f(base)g(class)g(for)f(all)i(the)f(other)f(application)j
2734 (proto)q(col)e(classes)g(lik)o(e)h Fo(echo)p Fn(,)f Fo(smtp)p
2735 Fn(,)0 444 y(etc.)h Fo(protocol)13 b Fn(is)i(deriv)o(ed)f(publicly)j(from)c
2736 Fo(iosockstream)p Fn(.)18 b(It)c(uses)g Fo(protocolbuf)e Fn(class,)i(a)g
2737 (nested)g(class)g(of)0 506 y Fo(protocol)p Fn(,)g(as)g(its)i(stream)e
2738 (bu\013er.)62 646 y(The)g Fo(protocol)e Fn(class)h(is)h(an)f(abstract)g
2739 (class)g(and)h(th)o(us,)f(y)o(ou)g(cannot)g(instan)o(tiate)g(an)g(ob)s(ject)g
2740 (of)f Fo(protocol)p Fn(.)0 891 y Fm(11.1)32 b(Class)14 b(proto)r(col::proto)r
2741 (colbuf)62 1030 y Fo(protocol::protocolbuf)i Fn(class)k(is)f(publicly)j
2742 (deriv)o(ed)e(from)e Fo(sockinetbuf)g Fn(and)h(th)o(us,)g(it)h(inherits)g
2743 (all)0 1093 y(the)c(latter's)f(public)j(mem)o(b)q(er)e(functions.)23
2744 b(In)16 b(addition,)h(the)f Fo(protocolbuf)e Fn(de\014nes)j(the)f(follo)o
2745 (wing)h(mem)o(b)q(er)0 1155 y(functions.)62 1294 y(In)f(what)f(follo)o(ws,)25
2746 1434 y Fl(\000)30 b Fo(p)15 b Fn(is)h(an)f(ob)s(ject)f(of)h(a)g(non-abstract)
2747 g(class)g(deriv)o(ed)h(from)f Fo(protocolbuf)p Fn(.)25 1511
2748 y Fl(\000)30 b Fo(pname)14 b Fn(is)i(the)f(transp)q(ort)g(proto)q(col)g(name)
2749 g(whic)o(h)h(is)g(either)g Fo(protocol::tcp)d Fn(or)i Fo(protocol::udp)p
2750 Fn(.)25 1588 y Fl(\000)30 b Fo(addr)15 b Fn(is)g(an)g(unsigned)i(long)f
2751 (denoting)f(the)h(v)m(alid)h(address)e(of)g(a)f(mac)o(hine)j(in)f(host)e(b)o
2752 (yte)h(order.)25 1665 y Fl(\000)30 b Fo(host)15 b Fn(is)g(a)g(c)o(har)g
2753 (string)g(denoting)h(the)f(name)h(of)e(a)h(mac)o(hine)h(lik)o(e)h
2754 Fo(")p Fn(k)o(elvin.seas.virginia.edu)p Fo(")p Fn(.)25 1742
2755 y Fl(\000)30 b Fo(portno)14 b Fn(is)i(an)f(in)o(t)h(and)f(denotes)g(the)h(p)q
2756 (ort)f(n)o(um)o(b)q(er)g(in)h(host)f(b)o(yte)g(order.)0 1881
2757 y Fo(protocol::protocolbuf::pro)o(tocolbu)o(f)e(\(pname\))240
2758 1958 y Fn(constructs)i Fo(protocolbuf)e Fn(ob)s(ject)i(with)h(the)f(transp)q
2759 (ort)f(proto)q(col)h(set)g(to)g Fo(pname)p Fn(.)0 2036 y Fo(p.protocol_name)e
2760 (\(\))240 2113 y Fn(returns)i(the)g(name)h(of)e(the)i(transp)q(ort)e(proto)q
2761 (col)h(of)g Fo(p)g Fn(as)g(a)g(c)o(har)f(string.)0 2190 y Fo(p.rfc_name)g
2762 (\(\))240 2267 y Fn(returns)25 b(the)h(name)f(of)g(the)g(application)i(proto)
2763 q(col)f(name)f(of)g Fo(p)g Fn(as)g(a)g(c)o(har)g(string.)51
2764 b Fo(pro-)240 2329 y(tocolbuf::rfc_name)13 b(\(\))26 b Fn(is)h(a)f(pure)h
2765 (virtual)g(function;)32 b(th)o(us,)d(an)o(y)d(class)g(deriv)o(ed)i(from)240
2766 2391 y Fo(protocol::protocolbuf)12 b Fn(should)k(pro)o(vide)g(a)f
2767 (de\014nition)i(for)e Fo(protocolbuf::rfc_name)d(\(\))p Fn(.)0
2768 2468 y Fo(p.rfc_doc)i(\(\))240 2545 y Fn(returns)21 b(the)g(RF)o(C)f(do)q
2769 (cumen)o(t)i(name)f(of)f(the)h(application)i(proto)q(col)d(of)h
2770 Fo(p)g Fn(as)f(a)h(c)o(har)f(string.)240 2608 y Fo(protocolbuf::rfc_doc)12
2771 b(\(\))22 b Fn(is)g(a)g(pure)g(virtual)h(function;)j(th)o(us,)d(an)o(y)e
2772 (class)i(deriv)o(ed)g(from)240 2670 y Fo(protocol::protocolbuf)12
2773 b Fn(should)k(pro)o(vide)g(a)f(de\014nition)i(for)e Fo(protocolbuf::rfc_doc)d
2774 (\(\))p Fn(.)p eop
2775 %%Page: 41 43
2776 bop 0 -58 a Fn(Chapter)15 b(11:)k(Class)c(proto)q(col)1368
2777 b(41)0 183 y Fo(p.serve_clients)13 b(\(portno\))240 258 y Fn(con)o(v)o(erts)j
2778 Fo(p)g Fn(in)o(to)g(a)g(serv)o(er.)23 b(Use)17 b(the)g(p)q(ort)f(sp)q
2779 (eci\014ed)i(in)f Fo(/etc/services)e Fn(for)h(the)g(application)240
2780 320 y(if)i Fo(portno)f(<)g Fn(0.)26 b(Use)18 b(a)f(default)h(p)q(ort)f(if)h
2781 Fo(0)d(<=)g(portno)f(<=)h(1024)p Fn(.)26 b(Otherwise,)19 b(use)f
2782 Fo(portno)e Fn(as)240 382 y(the)e(p)q(ort)g(to)g(accept)g(clien)o(ts)i
2783 (requesting)f(service.)20 b Fo(protocolbuf::serve_clients\(\))11
2784 b Fn(is)j(pure)240 445 y(virtual)h(function;)g(th)o(us,)f(an)o(y)g(class)h
2785 (deriv)o(ed)g(from)f Fo(protocol::protocolbuf)d Fn(should)k(pro)o(vide)240
2786 507 y(a)g(de\014nition)i(for)d Fo(protocolbuf::serve_clients\(\))p
2787 Fn(.)240 582 y(Please)i(do)f(not)g(c)o(hange)g(the)g(meaning)h(of)f
2788 Fo(portno)f Fn(when)i(y)o(ou)f(deriv)o(e)h(y)o(our)e(o)o(wn)h(class.)0
2789 656 y Fo(p.bind)f(\(\))34 b Fn(same)15 b(as)g Fo(p.serve_clients)e(\(-1\))p
2790 Fn(.)0 731 y Fo(p.connect)h(\(\))240 806 y Fn(connects)i(to)e(the)h(lo)q(cal)
2791 i(host's)d(serv)o(er)h(for)f(the)i(application.)21 b Fo(p)15
2792 b Fn(acts)g(as)g(the)g(clien)o(t.)0 881 y Fo(p.connect)f(\(addr\))240
2793 955 y Fn(connects)h(to)e(the)h(serv)o(er)g(running)h(at)f(the)g(mac)o(hine)h
2794 (with)g(address,)f Fo(addr)p Fn(.)k Fo(p)c Fn(acts)g(as)g(the)g(clien)o(t.)0
2795 1030 y Fo(p.connect)g(\(host\))240 1105 y Fn(connects)i(to)e(the)h(serv)o(er)
2796 g(running)i(at)d(the)h(mac)o(hine,)h Fo(host)p Fn(.)j Fo(p)c
2797 Fn(acts)g(as)g(the)g(clien)o(t.)0 1180 y Fo(p.connect)f(\(host,)g(portno\))
2798 240 1254 y Fn(connects)19 b(to)e(the)i(serv)o(er)f(servicing)i(clien)o(ts)f
2799 (at)f Fo(portno)f Fn(at)h(the)g(mac)o(hine,)i Fo(host)p Fn(.)29
2800 b(Unlik)o(e)20 b(this)240 1316 y(connect)13 b(call,)g(the)f(other)g(v)m
2801 (arian)o(ts)g(of)g(connect)g(uses)g(the)h(p)q(ort)e(sp)q(eci\014ed)k(in)e
2802 (the)f Fo(/etc/services)240 1379 y Fn(\014le.)p eop
2803 %%Page: 42 44
2804 bop 0 -58 a Fn(Chapter)15 b(12:)k(Ec)o(ho)c(Class)1433 b(42)0
2805 183 y Fk(12)41 b(Ec)n(ho)15 b(Class)62 374 y Fn(The)g Fo(echo)g
2806 Fn(class)g(implemen)o(ts)h(RF)o(C)f(862.)j(An)e Fo(echo)e Fn(ob)s(ject,)g(as)
2807 g(a)h(clien)o(t,)h(will)g(get)f(bac)o(k)g(what)f(ev)o(er)h(data)0
2808 437 y(it)f(sends)f(to)g(an)g Fo(echo)g Fn(serv)o(er.)19 b(Similarly)l(,)c(an)
2809 f Fo(echo)e Fn(ob)s(ject,)h(as)g(a)g(serv)o(er,)g(will)i(ec)o(ho)e(bac)o(k)h
2810 (the)f(data)g(it)g(receiv)o(es)0 499 y(from)h(its)i(clien)o(t.)62
2811 637 y(The)i Fo(echo)f Fn(class)h(is)g(deriv)o(ed)g(from)f Fo(protocol)g
2812 Fn(class,)h(and)f(uses)h Fo(echo::echobuf)e Fn(as)h(its)h(stream)e(bu\013er.)
2813 0 699 y Fo(echo::echobuf)d Fn(is)j(in)g(turn)f(is)h(deriv)o(ed)g(from)f
2814 Fo(protocol::protcolbuf)p Fn(.)62 837 y(In)h(what)f(follo)o(ws,)25
2815 975 y Fl(\000)30 b Fo(e)15 b Fn(is)h(a)f Fo(echo)f Fn(ob)s(ject.)25
2816 1051 y Fl(\000)30 b Fo(pname)14 b Fn(is)i(a)f(transp)q(ort)f(proto)q(col)h
2817 (name)h(and)f(m)o(ust)g(b)q(e)h(either)f Fo(protocol::tcp)f
2818 Fn(or)h Fo(protocol::udp)p Fn(.)0 1188 y Fo(echo)g(e)g(\(pname\))240
2819 1264 y Fn(constructs)g(the)g Fo(echo)g Fn(ob)s(ject,)f Fo(e)h
2820 Fn(with)g Fo(pname)g Fn(as)g(its)g(transp)q(ort)f(proto)q(col)i(name.)0
2821 1340 y Fo(echo::operator)d(->)i(\(\))240 1415 y Fn(an)g Fo(echo)g
2822 Fn(ob)s(ject)f(is)i(a)f(smart)f(p)q(oin)o(ter)i(for)e(the)i(underlying)h
2823 Fo(echobuf)p Fn(.)0 1631 y Fg(12.0.1)29 b(tsec)n(ho.C)120 1769
2824 y Fo(//)24 b(echo)f(server.)g(Serves)g(clients)g(at)g(port)h(4000.)120
2825 1818 y(#include)f(<echo.h>)120 1868 y(#include)g(<stdlib.h>)120
2826 1968 y(int)g(main)h(\(\))120 2018 y({)168 2068 y(echo)f(server)g
2827 (\(protocol::tcp\);)168 2117 y(server->serve_clients)e(\(4000\);)168
2828 2167 y(return)i(1;)120 2217 y(})0 2432 y Fg(12.0.2)29 b(tcec)n(ho.C)120
2829 2570 y Fo(//)24 b(echo)f(client.)g(Sends)g("mary)g(had)h(a)f(litte)h(lamb")f
2830 (to)g(the)h(server)120 2620 y(#include)f(<echo.h>)120 2670
2831 y(#include)g(<stdlib.h>)p eop
2832 %%Page: 43 45
2833 bop 0 -58 a Fn(Chapter)15 b(12:)k(Ec)o(ho)c(Class)1433 b(43)120
2834 233 y Fo(int)23 b(main)h(\(\))120 283 y({)168 333 y(echo)f
2835 (e\(protocol::tcp\);)168 432 y(e->connect)f(\("kelvin.seas.virginia.edu",)e
2836 (4000\);)168 532 y(cout)j(<<)h(e->rfc_name)e(\(\))i(<<)f(')h(')g(<<)f
2837 (e->rfc_doc)g(\(\))g(<<)h(endl;)168 632 y(e)f(<<)h("mary)f(had)h(a)f(little)g
2838 (lamb\\r\\n")g(<<)h(flush;)168 731 y(char)f(buf)g([256];)168
2839 781 y(e.getline)f(\(buf,)i(255\);)168 881 y(cout)f(<<)h("got)f(back:)g(")h
2840 (<<)f(buf)h(<<)f(endl;)168 930 y(return)g(0;)120 980 y(})p
2841 eop
2842 %%Page: 44 46
2843 bop 0 -58 a Fn(Chapter)15 b(13:)k(SMTP)c(Class)1400 b(44)0
2844 183 y Fk(13)41 b(SMTP)15 b(Class)62 359 y Fn(The)k Fo(smtp)f
2845 Fn(class,)i(whic)o(h)f(is)h(deriv)o(ed)f(from)f Fo(protocol)g
2846 Fn(class,)i(implemen)o(ts)f(RF)o(C)g(821.)29 b(It)19 b(can)g(b)q(e)g(used)0
2847 422 y(only)d(as)f(a)f(clien)o(t.)22 b(Serv)o(er)15 b(function)h(is)f(not)g(y)
2848 o(et)g(implemen)o(ted.)62 559 y Fo(smtp)h Fn(uses)g Fo(smtp::smtpbuf)f
2849 Fn(as)g(its)i(underlying)h(stream)d(bu\013er.)23 b(Also,)16
2850 b(lik)o(e)i(the)e Fo(protocol)f Fn(class,)i Fo(smtp)0 621 y
2851 Fn(is)f(a)f(smart)f(p)q(oin)o(ter)h(class)h(for)f(it)g(is)h
2852 Fo(smtp::smtpbuf)p Fn(.)62 758 y(In)g(what)f(follo)o(ws,)25
2853 895 y Fl(\000)30 b Fo(s)15 b Fn(is)h(an)f Fo(smtp)f Fn(ob)s(ject.)25
2854 967 y Fl(\000)30 b Fo(sb)15 b Fn(is)h(an)f Fo(smtp::smtpbuf)e
2855 Fn(ob)s(ject.)25 1039 y Fl(\000)30 b Fo(io)15 b Fn(is)h(a)e(p)q(oin)o(ter)i
2856 (to)f(an)g Fo(ostream)p Fn(.)25 1111 y Fl(\000)30 b Fo(buf)15
2857 b Fn(is)g(a)g(c)o(har)g(bu\013er)g(of)g(length)h Fo(buflen)p
2858 Fn(.)25 1183 y Fl(\000)30 b Fo(str,)15 b(str0,)f(str1,)h(...)f
2859 Fn(are)h(all)h(c)o(har)f(strings.)0 1320 y Fo(smtp)g(s)g(\(io\))240
2860 1392 y Fn(constructs)e(an)h Fo(smtp)e Fn(clien)o(t,)j Fo(s)p
2861 Fn(.)k(An)o(y)14 b(resp)q(onse)g(the)f(clien)o(t)i(gets)e(from)g(the)h(serv)o
2862 (er)f(is)h(sen)o(t)f(to)g(the)240 1455 y(ostream,)h Fo(io)p
2863 Fn(.)0 1527 y Fo(sb.get_response)f(\(\))240 1599 y Fn(gets)i(the)g(serv)o(er)
2864 g(resp)q(onse)h(and)f(sends)h(it)f(to)g Fo(io)f Fn(of)h(the)h
2865 Fo(smtpbuf)p Fn(.)0 1671 y Fo(sb.send_cmd)e(\(str0,)g(str1,)g(str2\))240
2866 1743 y Fn(concatenates)k(strings)g Fo(str0)p Fn(,)g Fo(str1)p
2867 Fn(,)g(and)h Fo(str2)e Fn(and)i(sends)f(the)h(concatenated)f(string)g(to)g
2868 (the)240 1805 y(serv)o(er)d(b)q(efore)g(getting)g(its)h(resp)q(onse.)0
2869 1877 y Fo(sb.send_buf)e(\(buf,)g(buflen\))240 1949 y Fn(sends)i(the)f(con)o
2870 (ten)o(ts)g(of)f(the)i Fo(buf)e Fn(to)h(the)g(serv)o(er.)0
2871 2021 y Fo(sb.helo)f(\(\))0 2093 y(sb.help)g(\(str\))0 2165
2872 y(sb.quit)g(\(\))0 2238 y(sb.turn)g(\(\))0 2310 y(sb.rset)g(\(\))0
2873 2382 y(sb.noop)g(\(\))0 2454 y(sb.data)g(\(\))0 2526 y(sb.vrfy)g(\(str\))0
2874 2598 y(sb.expn)g(\(str\))240 2670 y Fn(implemen)o(ts)i(the)g(resp)q(ectiv)o
2875 (e)g Fi(sm)o(tp)g Fn(commands.)k(See)15 b(RF)o(C)g(821)g(for)f(the)h(meaning)
2876 h(of)f(eac)o(h.)p eop
2877 %%Page: 45 47
2878 bop 0 -58 a Fn(Chapter)15 b(13:)k(SMTP)c(Class)1400 b(45)0
2879 183 y Fo(sb.mail)14 b(\(str\))240 257 y Fn(sends)22 b(the)f(mail)g(command)g
2880 (to)g(the)g(serv)o(er.)37 b Fo(str)20 b Fn(is)i(the)f(the)g(rev)o(erse)g
2881 (path)g(or)f(the)h Fi(FR)o(OM)240 319 y Fn(address.)0 393 y
2882 Fo(sb.rcpt)14 b(\(str\))240 466 y Fn(sends)g(the)f(recipien)o(t)i(command)e
2883 (to)f(the)h(serv)o(er.)19 b Fo(str)13 b Fn(is)h(the)f(forw)o(ard)f(path)h(or)
2884 f(the)i Fi(TO)h Fn(address.)0 540 y Fo(sb.data)f(\(buf,)h(buflen\))240
2885 614 y Fn(sends)f(the)g(con)o(ten)o(ts)f(of)g(the)h(bu\013er,)f
2886 Fo(buf)g Fn(as)g(the)h(mail)g(data)f(to)g(the)h(recipien)o(t)h(previously)g
2887 (estab-)240 676 y(lished)i(through)e Fo(smtpbuf::rcpt\(\))e
2888 Fn(calls.)0 749 y Fo(sb.data)h(\(filename\))240 823 y Fn(sends)19
2889 b(the)g(con)o(ten)o(ts)f(of)g(the)g(\014le,)i Fo(filename)e
2890 Fn(as)g(the)h(mail)g(data)f(to)g(the)h(recipien)o(t)h(previously)240
2891 885 y(established)d(through)e Fo(smtpbuf::rcpt\(\))e Fn(calls.)0
2892 1088 y Fg(13.0.1)29 b(tcsm)n(tp.C)120 1225 y Fo(//)24 b(smtp)f(client.)120
2893 1275 y(//)h(The)f(president)g(sends)g(a)h(message)e(to)i(gs4t@virginia.edu.)
2894 120 1325 y(#include)f(<smtp.h>)120 1375 y(#include)g(<stdio.h>)120
2895 1425 y(#include)g(<pwd.h>)120 1474 y(#include)g(<unistd.h>)120
2896 1574 y(int)g(main)h(\(\))120 1624 y({)168 1674 y(smtp)f(client)g(\(&cout\);)
2897 168 1773 y(//)g(establish)g(connection)168 1823 y(client->connect)f
2898 (\("fulton.seas.virginia.)o(edu"\);)168 1873 y(client->helo)g(\(\);)168
2899 1973 y(//)h(get)h(help)168 2022 y(client->help)e(\(\);)168
2900 2122 y(//)h(setup)g(the)h(FROM)f(address)168 2172 y(client->mail)f
2901 (\("president@whitehouse.gov)o("\);)168 2271 y(//)h(setup)g(the)h(TO)g
2902 (address)168 2321 y(client->rcpt)e(\("gs4t@virginia.edu"\);)168
2903 2421 y(//)h(send)h(the)f(message)168 2471 y(client->data)f(\(\);)168
2904 2521 y(client)h(<<)g("Hi)h(Sekar,)f(I)h(appoint)e(you)i(as)g(the)f(director)g
2905 (of)g(NASA\\r\\n")g(<<)h(flush;)168 2570 y(client)f(<<)g(")96
2906 b(-Bill,)23 b(Hill,)g(and)g(Chel\\r\\n")g(<<)h(flush;)168 2620
2907 y(cout)f(<<)h(client;)f(//)g(get)h(the)f(server)g(response.)p
2908 eop
2909 %%Page: 46 48
2910 bop 0 -58 a Fn(Chapter)15 b(13:)k(SMTP)c(Class)1400 b(46)168
2911 183 y Fo(//)23 b(finally)g(quit)168 233 y(client->quit)f(\(\);)168
2912 333 y(return)h(0;)120 382 y(})p eop
2913 %%Page: 47 49
2914 bop 0 -58 a Fn(Chapter)15 b(14:)k(Error)14 b(Handling)1349
2915 b(47)0 183 y Fk(14)41 b(Error)15 b(Handling)62 370 y Fn(Eac)o(h)k(class)h(in)
2916 g(the)f(So)q(c)o(k)o(et)p Fo(++)g Fn(library)h(uses)f Fo(error\(const)14
2917 b(char*\))k Fn(mem)o(b)q(er)i(function)g(to)e(rep)q(ort)h(an)o(y)0
2918 432 y(errors)g(that)f(ma)o(y)h(o)q(ccur)g(during)i(a)e(system)g(call.)33
2919 b(It)19 b(\014rst)g(calls)i Fo(perror\(\))d Fn(to)g(rep)q(ort)h(the)h(error)e
2920 (message)0 495 y(for)h(the)h Fo(errno)g Fn(set)f(b)o(y)h(the)g(system)g
2921 (call.)35 b(It)20 b(then)h(calls)g Fo(sock_error)14 b(\(const)g(char*)g(nm,)h
2922 (const)g(char*)0 557 y(errmsg\))f Fn(where)i Fo(nm)f Fn(is)g(the)h(name)f(of)
2923 f(the)i(class.)62 694 y(The)g Fo(sock_error\(\))d Fn(function)j(simply)h
2924 (prin)o(ts)e(the)g Fo(nm)g Fn(and)h(the)f Fo(errmsg)f Fn(on)h(the)h
2925 Fi(stderr)p Fn(.)p eop
2926 %%Page: 48 50
2927 bop 0 -58 a Fn(Chapter)15 b(15:)k(Pitfalls)1510 b(48)0 183
2928 y Fk(15)41 b(Pitfalls)62 374 y Fn(Deadlo)q(c)o(ks)19 b(in)g(datagram)e(so)q
2929 (c)o(k)o(ets)h(are)g(the)h(most)f(common)g(mistak)o(es)g(that)g(no)o(vices)h
2930 (mak)o(e.)29 b(T)l(o)18 b(allevi-)0 436 y(ate)i(the)g(problem,)i
2931 Fo(sockbuf)d Fn(class)h(pro)o(vides)h(timeout)f(facilities)i(that)e(can)g(b)q
2932 (e)h(used)g(e\013ectiv)o(ely)g(to)e(a)o(v)o(oid)0 498 y(deadlo)q(c)o(ks.)62
2933 636 y(Consider)14 b(the)g(follo)o(wing)h(simple)g(tsm)o(tp)d(example)j(whic)o
2934 (h)f(sends)h(the)e(HELP)h(command)g(to)f(a)g(sm)o(tp)g(serv)o(er)0
2935 698 y(and)18 b(gets)g(bac)o(k)f(the)h(help)i(message.)27 b(Supp)q(ose)19
2936 b(it)g(do)q(es)f(not)f(kno)o(w)h(the)g(size)h(of)e(the)h(help)i(message)d
2937 (nor)h(the)0 761 y(format)c(of)h(the)h(message.)k(In)d(suc)o(h)f(cases,)f
2938 (the)g(timeout)h(facilities)i(of)d Fo(sockbuf)f Fn(class)i(pro)o(vides)g(the)
2939 g(required)0 823 y(to)q(ols.)62 961 y(The)i(example)h(terminates)f(the)g
2940 (help)h(message)e(reception)i(if)g(the)f(there)g(is)g(no)g(input)h(activit)o
2941 (y)f(from)f(the)0 1023 y(sm)o(tp)e(serv)o(er)f(for)h(10)g(seconds.)0
2942 1237 y Fg(tsm)n(tp.cc)120 1375 y Fo(#include)23 b(<sockinet.h>)120
2943 1474 y(int)g(main\(\))120 1524 y({)120 1574 y(iosockinet)70
2944 b(sio\(sockbuf::sock_stream\);)120 1674 y(sio->connect\("kelvin.seas.)o
2945 (virgini)o(a.edu",)20 b("smtp",)j("tcp"\);)120 1773 y(char)g(buf[512];)120
2946 1823 y(sio.getline\(buf,)f(511\);)h(cout)g(<<)h(buf)f(<<)h(endl;)120
2947 1873 y(sio)f(<<)h("HELO)f(kelvin\\n")g(<<)g(flush;)120 1923
2948 y(sio.getline\(buf,)f(511\);)h(cout)g(<<)h(buf)f(<<)h(endl;)120
2949 2022 y(sio)f(<<)h("HELP\\n")f(<<)g(flush;)311 2122 y(//)g(set)h(the)f
2950 (receive)g(timeout)g(to)h(10)f(seconds)311 2172 y(int)g(tmo)h(=)g
2951 (sio->recvtimeout\(10\);)120 2271 y(while)f(\()h(sio.getline\(buf,)e(511\))h
2952 (\))h(cout)f(<<)h(buf)f(<<)h(endl;)120 2321 y(//)g(if)f(the)h(above)f(while)g
2953 (loop)g(terminated)g(due)g(to)h(timeout)120 2371 y(//)g(clear)f(the)g(state)g
2954 (of)h(sio.)120 2421 y(if)g(\()f(!sio->is_eof\(\))f(\))120 2471
2955 y(sio.clear\(\);)120 2521 y(sio->recvtimeout\(tmo\);)f(//)i(reset)h(the)f
2956 (receive)g(timeout)g(time)120 2620 y(sio)g(<<)h("QUIT\\n")f(<<)g(flush;)120
2957 2670 y(sio.getline\(buf,)f(511\);)h(cout)g(<<)h(buf)f(<<)h(endl;)p
2958 eop
2959 %%Page: 49 51
2960 bop 0 -58 a Fn(Chapter)15 b(15:)k(Pitfalls)1510 b(49)311 183
2961 y Fo(return)23 b(0;)120 233 y(})p eop
2962 %%Page: 50 52
2963 bop 0 -58 a Fn(Index)1795 b(50)0 183 y Fk(Index)0 416 y Fm(A)0
2964 482 y Ff(accepting)15 b(connections)7 b Fe(:)h(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)
2965 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2966 (:)g(:)g(:)20 b Ff(9)0 540 y(ac)o(kno)o(wledgmen)o(ts)13 b
2967 Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
2968 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23
2969 b Ff(2)0 667 y Fm(B)0 734 y Ff(base)14 b(address)g(class)5
2970 b Fe(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
2971 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)17
2972 b Ff(13)0 792 y(binding)f(addresses)8 b Fe(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)
2973 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
2974 (:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Ff(9)0 919 y Fm(C)0 985 y Ff(class)14
2975 b(iso)q(c)o(kinet)f Fe(:)6 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
2976 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2977 (:)g(:)g(:)g(:)g(:)24 b Ff(28)0 1043 y(class)14 b(iso)q(c)o(kunix)6
2978 b Fe(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2979 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
2980 b Ff(31)0 1102 y(class)14 b(so)q(c)o(kbuf)5 b Fe(:)i(:)f(:)g(:)g(:)g(:)g(:)g
2981 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
2982 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)17 b
2983 Ff(4)0 1160 y(common)d(mistak)o(es)6 b Fe(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
2984 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
2985 (:)g(:)g(:)g(:)g(:)g(:)19 b Ff(48)0 1218 y(connect)6 b Fe(:)h(:)f(:)g(:)h(:)f
2986 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
2987 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2988 (:)g(:)19 b Ff(9)0 1276 y(connection)c(establishmen)o(t)t Fe(:)9
2989 b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
2990 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Ff(9)0 1334 y(Cop)o(yrigh)o(t)t
2991 Fe(:)7 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
2992 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
2993 (:)f(:)g(:)g(:)g(:)g(:)16 b Ff(1)0 1392 y(cop)o(yrigh)o(t)f(notice)t
2994 Fe(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
2995 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)16
2996 b Ff(1)0 1519 y Fm(D)0 1586 y Ff(datagram)e(inet)d Fe(:)6 b(:)h(:)f(:)g(:)g
2997 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
2998 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Ff(16)0
2999 1644 y(datagram)14 b(unix)6 b Fe(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3000 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3001 (:)g(:)g(:)g(:)g(:)g(:)h(:)18 b Ff(21)0 1771 y Fm(E)0 1837
3002 y Ff(ec)o(ho)13 b(class)t Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
3003 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3004 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)17 b Ff(42)0 1895
3005 y Fd(echo::echo)t Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3006 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3007 (:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(42)0 1953 y Fd(echo::oper)o(at)o(or-)o(>)6
3008 b Fe(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3009 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3010 b Ff(42)0 2012 y(error)13 b(handling)g Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3011 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3012 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(47)0 2139 y
3013 Fm(F)0 2205 y Ff(\015ushing)15 b(bu\013ers)d Fe(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g
3014 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3015 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Ff(4)0 2263
3016 y(\015ushing)15 b(output)d Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3017 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3018 (:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(8)0 2321 y(fork)13 b(class)8
3019 b Fe(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3020 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3021 (:)g(:)g(:)g(:)g(:)21 b Ff(37)0 2379 y(fork)13 b(example)t
3022 Fe(:)7 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3023 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3024 (:)g(:)16 b Ff(38)0 2438 y Fd(Fork::Fork)t Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g
3025 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3026 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
3027 Ff(37)0 2496 y Fd(Fork::is)p 162 2496 12 2 v 11 w(child)10
3028 b Fe(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3029 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
3030 b Ff(37)0 2554 y Fd(Fork::is)p 162 2554 V 11 w(parent)8 b Fe(:)e(:)g(:)g(:)g
3031 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3032 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(37)0 2612
3033 y Fd(Fork::proc)o(es)o(s)p 260 2612 V 11 w(id)9 b Fe(:)c(:)h(:)g(:)g(:)h(:)f
3034 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3035 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(37)0 2670 y Fd(Fork::suic)o(id)o(e)p
3036 260 2670 V 11 w(signal)t Fe(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3037 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3038 b Ff(37)1015 416 y Fm(G)1015 482 y Fd(getpeername)9 b(\(see)i(sockinetbu)o
3039 (f::)o(pee)o(ra)o(ddr)o(\))6 b Fe(:)g(:)g(:)g(:)g(:)g(:)g(:)23
3040 b Ff(15)1015 540 y Fd(getsockname)9 b(\(see)i(sockinetbu)o(f::)o(loc)o(al)o
3041 (add)o(r\))c Fe(:)s(:)g(:)f(:)g(:)g(:)21 b Ff(14)1015 598 y(getso)q(c)o(k)o
3042 (opt)6 b Fe(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3043 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3044 (:)g(:)g(:)g(:)h(:)f(:)19 b Ff(10)1015 725 y Fm(I)1015 792
3045 y Ff(inet)14 b(address)g(class)9 b Fe(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3046 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3047 (:)h(:)f(:)g(:)g(:)22 b Ff(19)1015 850 y(inet)14 b(domain)s
3048 Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3049 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3050 (:)f(:)g(:)16 b Ff(14)1015 908 y Fd(iopipestrea)o(m:)o(:fo)o(rk)s
3051 Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3052 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Ff(33)1015
3053 966 y Fd(iopipestrea)o(m:)o(:io)o(pip)o(es)o(tre)o(am)7 b Fe(:)f(:)g(:)g(:)g
3054 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3055 b Ff(33)1015 1024 y Fd(iopipestrea)o(m:)o(:pi)o(d)5 b Fe(:)s(:)h(:)g(:)g(:)g
3056 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3057 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Ff(33)1015 1082 y(ioso)q(c)o(kinet)e
3058 (example)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3059 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)18
3060 b Ff(17)1015 1140 y(ioso)q(c)o(kinet)e(examples)6 b Fe(:)i(:)e(:)g(:)g(:)g(:)
3061 g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3062 (:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Ff(29)1015 1198 y(ioso)q(c)o(kstream)c(class)
3063 d Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3064 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3065 b Ff(27)1015 1256 y(ioso)q(c)o(kstream)15 b(classes)s Fe(:)8
3066 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3067 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16 b Ff(26)1015
3068 1315 y Fd(iosockstrea)o(m:)o(:io)o(soc)o(ks)o(tre)o(am)7 b
3069 Fe(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3070 g(:)g(:)24 b Ff(28)1015 1373 y Fd(iosockstrea)o(m:)o(:op)o(era)o(to)o(r->)t
3071 Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3072 (:)g(:)g(:)g(:)g(:)g(:)18 b Ff(28)1015 1431 y Fd(iosockstrea)o(m:)o(:rd)o
3073 (buf)7 b Fe(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3074 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Ff(28)1015
3075 1489 y(ioso)q(c)o(kunix)16 b(class)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3076 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3077 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Ff(30)1015 1547 y(ioso)q(c)o(kunix)e
3078 (example)9 b Fe(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3079 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
3080 b Ff(23)1015 1605 y(ioso)q(c)o(kunix)16 b(examples)c Fe(:)6
3081 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3082 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(31)1015
3083 1663 y Fd(ipipestream)o(::)o(ipi)o(pes)o(tr)o(eam)t Fe(:)s(:)6
3084 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3085 (:)g(:)g(:)18 b Ff(33)1015 1721 y(iso)q(c)o(kinet)e(class)c
3086 Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3087 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3088 b Ff(28)1015 1779 y(iso)q(c)o(kinet)16 b(example)6 b Fe(:)h(:)g(:)f(:)g(:)g
3089 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3090 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19 b Ff(16)1015 1838
3091 y Fd(isockinet::)o(is)o(ock)o(ine)o(t)6 b Fe(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3092 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3093 (:)23 b Ff(29)1015 1896 y Fd(isockinet::)o(op)o(era)o(tor)o(->)7
3094 b Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3095 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(29)1015 1954 y Fd(isockinet::)o
3096 (rd)o(buf)5 b Fe(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3097 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19
3098 b Ff(29)1015 2012 y(iso)q(c)o(kstream)c(class)s Fe(:)7 b(:)g(:)f(:)g(:)g(:)g
3099 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3100 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)16 b Ff(26)1015 2070
3101 y Fd(isockstream)o(::)o(iso)o(cks)o(tr)o(eam)t Fe(:)s(:)6 b(:)g(:)g(:)g(:)g
3102 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18
3103 b Ff(26)1015 2128 y Fd(isockstream)o(::)o(ope)o(rat)o(or)o(->)5
3104 b Fe(:)s(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3105 (:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Ff(26)1015 2186 y Fd(isockstream)o(::)o(rdb)o
3106 (uf)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3107 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3108 b Ff(26)1015 2244 y(iso)q(c)o(kunix)f(class)6 b Fe(:)h(:)g(:)f(:)g(:)g(:)g(:)
3109 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3110 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)19 b Ff(31)1015
3111 2303 y(iso)q(c)o(kunix)d(example)c Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3112 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3113 (:)g(:)g(:)g(:)g(:)23 b Ff(21)1015 2361 y Fd(isockunix::)o(is)o(ock)o(uni)o
3114 (x)6 b Fe(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3115 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(31)1015
3116 2419 y Fd(isockunix::)o(op)o(era)o(tor)o(->)7 b Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)
3117 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3118 (:)22 b Ff(31)1015 2477 y Fd(isockunix::)o(rd)o(buf)5 b Fe(:)t(:)h(:)g(:)g(:)
3119 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3120 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19 b Ff(31)1015 2604 y Fm(L)1015
3121 2670 y Ff(listening)9 b Fe(:)g(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
3122 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3123 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21 b Ff(9)p
3124 eop
3125 %%Page: 51 53
3126 bop 0 -58 a Fn(Index)1795 b(51)0 183 y Fm(N)0 250 y Ff(names)10
3127 b Fe(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3128 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3129 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(9)0 367 y Fm(O)0
3130 433 y Fd(opipestrea)o(m:)o(:op)o(ip)o(est)o(rea)o(m)t Fe(:)s(:)6
3131 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3132 (:)g(:)g(:)17 b Ff(33)0 492 y(option)d(getting)s Fe(:)8 b(:)e(:)g(:)g(:)g(:)g
3133 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3134 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b
3135 Ff(9)0 550 y(option)e(setting)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3136 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3137 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(9)0 608 y(oso)q(c)o(kinet)d
3138 (example)d Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3139 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
3140 b Ff(16)0 666 y(oso)q(c)o(kstream)14 b(class)7 b Fe(:)h(:)e(:)g(:)g(:)g(:)g
3141 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3142 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)20 b Ff(27)0 724 y Fd(osockstrea)o(m:)o
3143 (:op)o(er)o(ato)o(r->)5 b Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3144 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b Ff(27)0
3145 782 y Fd(osockstrea)o(m:)o(:os)o(oc)o(kst)o(rea)o(m)t Fe(:)s(:)6
3146 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3147 (:)g(:)g(:)17 b Ff(27)0 840 y Fd(osockstrea)o(m:)o(:rd)o(bu)o(f)t
3148 Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3149 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)16 b Ff(27)0
3150 898 y(oso)q(c)o(kunix)f(example)6 b Fe(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3151 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3152 (:)g(:)h(:)f(:)18 b Ff(21)0 956 y(o)o(v)o(erview)c(of)f(so)q(c)o(k)o(et)p
3153 Fd(++)c Fe(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3154 g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22
3155 b Ff(3)0 1074 y Fm(P)0 1140 y Fd(pipe)t Fe(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g
3156 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3157 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3158 (:)17 b Ff(33)0 1198 y(pip)q(e)d(example)d Fe(:)6 b(:)g(:)h(:)f(:)g(:)g(:)g
3159 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3160 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b Ff(34)0
3161 1256 y(pip)q(estream)15 b(classes)c Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3162 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3163 (:)h(:)f(:)g(:)g(:)22 b Ff(33)0 1315 y(pip)q(estream)15 b(examples)5
3164 b Fe(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3165 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(33)0
3166 1373 y(pitfalls)t Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
3167 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3168 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)16 b Ff(48)0
3169 1431 y Fd(popen)s Fe(:)t(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3170 g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3171 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Ff(33)0
3172 1489 y(p)q(op)q(en)e(example)f Fe(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3173 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3174 (:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(35)0 1547 y Fd(protcolbuf)o(::)o(pro)o(to)
3175 o(col)p 397 1547 12 2 v 10 w(name)6 b Fe(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3176 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19 b
3177 Ff(40)0 1605 y(proto)q(col)14 b(class)7 b Fe(:)g(:)f(:)g(:)h(:)f(:)g(:)g(:)g
3178 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3179 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b Ff(40)0 1663
3180 y(proto)q(colbuf)c(class)5 b Fe(:)i(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3181 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3182 (:)g(:)g(:)g(:)g(:)18 b Ff(40)0 1721 y Fd(protocolbu)o(f:)o(:bi)o(nd)t
3183 Fe(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3184 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
3185 Ff(41)0 1779 y Fd(protocolbu)o(f:)o(:co)o(nn)o(ect)6 b Fe(:)g(:)g(:)g(:)g(:)g
3186 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3187 (:)h(:)f(:)g(:)22 b Ff(41)0 1838 y Fd(protocolbu)o(f:)o(:pr)o(ot)o(oco)o(lbu)
3188 o(f)t Fe(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3189 g(:)g(:)g(:)h(:)f(:)g(:)g(:)17 b Ff(40)0 1896 y Fd(protocolbu)o(f:)o(:rf)o(c)
3190 p 319 1896 V 11 w(doc)t Fe(:)5 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3191 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3192 b Ff(40)0 1954 y Fd(protocolbu)o(f:)o(:rf)o(c)p 319 1954 V
3193 11 w(name)9 b Fe(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3194 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(40)0
3195 2012 y Fd(protocolbu)o(f:)o(:se)o(rv)o(e)p 358 2012 V 11 w(clients)5
3196 b Fe(:)s(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3197 (:)g(:)g(:)h(:)17 b Ff(41)0 2129 y Fm(R)0 2196 y Ff(read)c(timeouts)5
3198 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3199 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3200 (:)18 b Ff(11)0 2313 y Fm(S)0 2379 y Ff(setso)q(c)o(k)o(opt)8
3201 b Fe(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3202 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3203 (:)g(:)g(:)g(:)21 b Ff(10)0 2438 y(sm)o(tp)13 b(class)c Fe(:)e(:)f(:)g(:)g(:)
3204 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3205 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
3206 b Ff(44)0 2496 y Fd(smtp::smtp)t Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3207 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3208 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(44)0 2554
3209 y Fd(smtpbuf::g)o(et)p 240 2554 V 10 w(response)8 b Fe(:)f(:)f(:)g(:)g(:)g(:)
3210 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3211 (:)g(:)24 b Ff(44)0 2612 y Fd(smtpbuf::s)o(en)o(d)p 260 2612
3212 V 11 w(buf)8 b Fe(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3213 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
3214 b Ff(44)0 2670 y Fd(smtpbuf::s)o(en)o(d)p 260 2670 V 11 w(cmd)8
3215 b Fe(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3216 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b
3217 Ff(44)1015 183 y(so)q(c)o(kAddr)14 b(class)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)g
3218 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3219 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Ff(13)1015
3220 241 y Fd(sockAddr::f)o(am)o(ily)5 b Fe(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3221 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3222 (:)g(:)h(:)f(:)19 b Ff(13)1015 299 y Fd(sockAddr::o)o(pe)o(rat)o(or)9
3223 b(void*)f Fe(:)t(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3224 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Ff(13)1015 358 y Fd(sockAddr::s)o(iz)o(e)
3225 9 b Fe(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
3226 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
3227 b Ff(13)1015 416 y(so)q(c)o(kbuf)14 b(class)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g(:)
3228 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3229 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
3230 Ff(4)1015 474 y(so)q(c)o(kbuf)c(constructors)9 b Fe(:)f(:)e(:)g(:)g(:)g(:)g
3231 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3232 (:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Ff(4)1015 532 y(so)q(c)o(kbuf)14
3233 b(destructor)9 b Fe(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3234 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3235 (:)22 b Ff(5)1015 590 y(so)q(c)o(kbuf)14 b(reading)7 b Fe(:)h(:)f(:)f(:)g(:)g
3236 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3237 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Ff(5)1015
3238 648 y(so)q(c)o(kbuf)14 b(writing)d Fe(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3239 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3240 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Ff(5)1015 706 y Fd(sockbuf::~s)o(oc)o
3241 (kbu)o(f)6 b Fe(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3242 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3243 b Ff(5)1015 764 y Fd(sockbuf::ac)o(ce)o(pt)8 b Fe(:)s(:)e(:)g(:)g(:)h(:)f(:)g
3244 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3245 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(9)1015 823 y Fd(sockbuf::bi)o(nd)8
3246 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3247 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24
3248 b Ff(9)1015 881 y Fd(sockbuf::br)o(oa)o(dca)o(st)s Fe(:)s(:)6
3249 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3250 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Ff(11)1015 939
3251 y Fd(sockbuf::cl)o(ea)o(rer)o(ror)7 b Fe(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3252 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3253 (:)24 b Ff(10)1015 997 y Fd(sockbuf::cl)o(os)o(e)7 b Fe(:)f(:)g(:)g(:)g(:)g
3254 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3255 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Ff(5)1015
3256 1055 y Fd(sockbuf::co)o(nn)o(ect)6 b Fe(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3257 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3258 (:)g(:)h(:)f(:)g(:)g(:)20 b Ff(9)1015 1113 y Fd(sockbuf::de)o(bu)o(g)9
3259 b Fe(:)s(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3260 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22
3261 b Ff(10)1015 1171 y Fd(sockbuf::do)o(al)o(loc)o(ate)r Fe(:)t(:)6
3262 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3263 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)16 b Ff(8)1015 1229
3264 y Fd(sockbuf::do)o(nt)o(rou)o(te)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3265 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3266 (:)g(:)g(:)17 b Ff(11)1015 1287 y Fd(sockbuf::fl)o(us)o(h)p
3267 1295 1287 V 11 w(output)t Fe(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3268 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3269 b Ff(8)1015 1346 y Fd(sockbuf::ge)o(to)o(pt)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)h(:)
3270 f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3271 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Ff(10)1015 1404 y Fd(sockbuf::ge)o(tt)o
3272 (ype)5 b Fe(:)t(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3273 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)19
3274 b Ff(10)1015 1462 y Fd(sockbuf::is)p 1236 1462 V 10 w(eof)10
3275 b Fe(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3276 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
3277 b Ff(6)1015 1520 y Fd(sockbuf::is)p 1236 1520 V 10 w(exceptionpe)o(nd)o(ing)r
3278 Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3279 (:)g(:)g(:)16 b Ff(7)1015 1578 y Fd(sockbuf::is)p 1236 1578
3280 V 10 w(open)6 b Fe(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3281 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)18
3282 b Ff(5,)13 b(6)1015 1636 y Fd(sockbuf::is)p 1236 1636 V 10
3283 w(readready)s Fe(:)t(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3284 g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3285 b Ff(7)1015 1694 y Fd(sockbuf::is)p 1236 1694 V 10 w(writeready)7
3286 b Fe(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3287 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(7)1015 1752 y Fd(sockbuf::ke)o(ep)
3288 o(ali)o(ve)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3289 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3290 b Ff(11)1015 1810 y Fd(sockbuf::li)o(ng)o(er)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)h
3291 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3292 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Ff(11)1015 1869 y Fd(sockbuf::li)o
3293 (st)o(en)8 b Fe(:)s(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3294 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3295 (:)22 b Ff(9)1015 1927 y Fd(sockbuf::ms)o(gf)o(lag)8 b Fe(:)e(:)g(:)g(:)g(:)g
3296 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3297 (:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Ff(6,)13 b(7)1015 1985 y Fd(sockbuf::oo)o(bi)
3298 o(nli)o(ne)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3299 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17
3300 b Ff(11)1015 2043 y Fd(sockbuf::op)o(en)8 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)
3301 g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3302 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Ff(5)1015 2101
3303 y Fd(sockbuf::op)o(er)o(ato)o(r=)t Fe(:)s(:)6 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3304 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3305 (:)g(:)g(:)g(:)18 b Ff(5)1015 2159 y Fd(sockbuf::ov)o(er)o(flo)o(w)6
3306 b Fe(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3307 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3308 b Ff(8)1015 2217 y Fd(sockbuf::rc)o(vb)o(uf)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)h(:)
3309 f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3310 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Ff(11)1015 2275 y Fd(sockbuf::re)o(ad)8
3311 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3312 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24
3313 b Ff(7)1015 2334 y Fd(sockbuf::re)o(cv)8 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3314 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3315 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Ff(7)1015 2392
3316 y Fd(sockbuf::re)o(cv)o(fro)o(m)6 b Fe(:)s(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3317 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3318 (:)g(:)g(:)g(:)19 b Ff(7)1015 2450 y Fd(sockbuf::re)o(cv)o(msg)6
3319 b Fe(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3320 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20
3321 b Ff(7)1015 2508 y Fd(sockbuf::re)o(cv)o(tim)o(eou)o(t)5 b
3322 Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3323 g(:)g(:)g(:)h(:)f(:)g(:)g(:)18 b Ff(8,)13 b(12)1015 2566 y
3324 Fd(sockbuf::re)o(us)o(ead)o(dr)s Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3325 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3326 (:)g(:)17 b Ff(11)1015 2624 y Fd(sockbuf::se)o(nd)8 b Fe(:)e(:)g(:)g(:)g(:)g
3327 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3328 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Ff(6)p
3329 eop
3330 %%Page: 52 54
3331 bop 0 -58 a Fn(Index)1795 b(52)0 183 y Fd(sockbuf::s)o(en)o(dms)o(g)7
3332 b Fe(:)s(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3333 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20
3334 b Ff(6)0 241 y Fd(sockbuf::s)o(en)o(dti)o(me)o(out)t Fe(:)t(:)6
3335 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3336 (:)g(:)g(:)g(:)g(:)18 b Ff(8,)13 b(12)0 299 y Fd(sockbuf::s)o(en)o(dto)8
3337 b Fe(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3338 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
3339 b Ff(6)0 358 y Fd(sockbuf::s)o(et)o(opt)6 b Fe(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)
3340 g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3341 (:)g(:)h(:)f(:)g(:)g(:)g(:)20 b Ff(10)0 416 y Fd(sockbuf::s)o(hu)o(tdo)o(wn)5
3342 b Fe(:)s(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3343 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3344 b Ff(5)0 474 y Fd(sockbuf::s)o(hu)o(tho)o(w)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)g(:)
3345 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3346 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(5)0 532 y Fd(sockbuf::s)o(nd)o(buf)6
3347 b Fe(:)t(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3348 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)20
3349 b Ff(11)0 590 y Fd(sockbuf::s)o(oc)o(kbu)o(f)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)g
3350 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3351 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(4)0 648 y Fd(sockbuf::s)o(yn)o(c)8
3352 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3353 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3354 b Ff(8)0 706 y Fd(sockbuf::s)o(ys)p 240 706 12 2 v 10 w(read)9
3355 b Fe(:)c(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3356 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21
3357 b Ff(7)0 764 y Fd(sockbuf::s)o(ys)p 240 764 V 10 w(write)7
3358 b Fe(:)e(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3359 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b
3360 Ff(6)0 823 y Fd(sockbuf::t)o(yp)o(e)8 b Fe(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
3361 f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3362 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(4)0 881 y Fd(sockbuf::u)o(nd)o
3363 (erf)o(lo)o(w)5 b Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3364 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)17
3365 b Ff(8)0 939 y Fd(sockbuf::w)o(ri)o(te)6 b Fe(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3366 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3367 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Ff(6)0 997 y Fd(sockbuf::x)o(sp)o
3368 (utn)8 b Fe(:)s(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3369 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
3370 b Ff(8)0 1055 y(so)q(c)o(k)o(et)13 b(options)h Fe(:)6 b(:)g(:)g(:)g(:)g(:)g
3371 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3372 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24 b Ff(9)0
3373 1113 y Fd(socketpair)t Fe(:)s(:)7 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3374 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3375 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(33)0 1171 y(so)q(c)o(k)o(etpair)d
3376 (example)s Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
3377 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)16
3378 b Ff(34)0 1229 y(so)q(c)o(kinetaddr)f(class)s Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)
3379 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3380 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)16 b Ff(19)0 1287 y Fd(sockinetad)o(dr)o(::f)o
3381 (am)o(ily)6 b Fe(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3382 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Ff(20)0
3383 1346 y Fd(sockinetad)o(dr)o(::g)o(et)o(por)o(t)8 b Fe(:)s(:)e(:)g(:)g(:)h(:)f
3384 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3385 (:)g(:)21 b Ff(20)0 1404 y Fd(sockinetad)o(dr)o(::g)o(et)o(tho)o(stn)o(am)o
3386 (e)7 b Fe(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3387 (:)f(:)g(:)g(:)23 b Ff(20)0 1462 y Fd(sockinetad)o(dr)o(::o)o(pe)o(rat)o(or)9
3388 b(void*)h Fe(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3389 (:)g(:)g(:)24 b Ff(19)0 1520 y Fd(sockinetad)o(dr)o(::s)o(iz)o(e)t
3390 Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3391 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)16 b Ff(19)0
3392 1578 y Fd(sockinetad)o(dr)o(::s)o(oc)o(kin)o(eta)o(dd)o(r)7
3393 b Fe(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3394 (:)g(:)g(:)23 b Ff(19)0 1636 y(so)q(c)o(kinetbuf)15 b(class)6
3395 b Fe(:)h(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3396 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)19
3397 b Ff(14)0 1694 y(so)q(c)o(kinetbuf)c(dgram)e(example)f Fe(:)6
3398 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3399 (:)g(:)g(:)g(:)23 b Ff(16)0 1752 y(so)q(c)o(kinetbuf)15 b(stream)e(example)7
3400 b Fe(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3401 (:)g(:)h(:)f(:)g(:)g(:)19 b Ff(17)0 1810 y Fd(sockinetbu)o(f:)o(:bi)o(nd)t
3402 Fe(:)s(:)6 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3403 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b
3404 Ff(15)0 1869 y Fd(sockinetbu)o(f:)o(:co)o(nn)o(ect)6 b Fe(:)g(:)g(:)g(:)g(:)g
3405 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3406 (:)h(:)f(:)g(:)22 b Ff(15)0 1927 y Fd(sockinetbu)o(f:)o(:lo)o(ca)o(lad)o(dr)7
3407 b Fe(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3408 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(14)0 1985 y Fd(sockinetbu)o(f:)o(:lo)o
3409 (ca)o(lho)o(st)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3410 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(15)0
3411 2043 y Fd(sockinetbu)o(f:)o(:lo)o(ca)o(lpo)o(rt)7 b Fe(:)s(:)f(:)g(:)g(:)g(:)
3412 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3413 (:)20 b Ff(15)1015 183 y Fd(sockinetbuf)o(::)o(ope)o(n)5 b
3414 Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
3415 g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b Ff(14)1015
3416 241 y Fd(sockinetbuf)o(::)o(ope)o(rat)o(or)9 b(=)g Fe(:)d(:)g(:)g(:)g(:)g(:)g
3417 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
3418 b Ff(14)1015 299 y Fd(sockinetbuf)o(::)o(pee)o(rad)o(dr)7 b
3419 Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
3420 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(15)1015 358 y Fd(sockinetbuf)o(::)o
3421 (pee)o(rho)o(st)7 b Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
3422 f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(15)1015
3423 416 y Fd(sockinetbuf)o(::)o(pee)o(rpo)o(rt)7 b Fe(:)t(:)f(:)g(:)g(:)g(:)g(:)g
3424 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3425 (:)22 b Ff(15)1015 474 y Fd(sockinetbuf)o(::)o(soc)o(kin)o(et)o(buf)t
3426 Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
3427 (:)g(:)g(:)g(:)g(:)g(:)18 b Ff(14)1015 532 y(so)q(c)o(kstream)c(classes)d
3428 Fe(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3429 (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
3430 b Ff(26)1015 590 y(so)q(c)o(kunixadd)q(r)15 b(class)7 b Fe(:)h(:)e(:)g(:)g(:)
3431 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3432 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Ff(25)1015 648 y Fd(sockunixadd)o(r:)
3433 o(:fa)o(mil)o(y)6 b Fe(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3434 g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23
3435 b Ff(25)1015 706 y Fd(sockunixadd)o(r:)o(:op)o(era)o(to)o(r)10
3436 b(void*)f Fe(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3437 (:)g(:)g(:)25 b Ff(25)1015 764 y Fd(sockunixadd)o(r:)o(:si)o(ze)s
3438 Fe(:)s(:)6 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3439 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)17 b Ff(25)1015
3440 823 y Fd(sockunixadd)o(r:)o(:so)o(cku)o(ni)o(xad)o(dr)7 b Fe(:)f(:)g(:)g(:)g
3441 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)24
3442 b Ff(25)1015 881 y(so)q(c)o(kunixbuf)16 b(class)11 b Fe(:)6
3443 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3444 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b
3445 Ff(21)1015 939 y(so)q(c)o(kunixbuf)16 b(example)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)
3446 g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3447 (:)g(:)g(:)h(:)f(:)g(:)18 b Ff(23)1015 997 y Fd(sockunixbuf)o(::)o(bin)o(d)5
3448 b Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3449 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b
3450 Ff(21)1015 1055 y Fd(sockunixbuf)o(::)o(con)o(nec)o(t)6 b Fe(:)g(:)h(:)f(:)g
3451 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3452 (:)g(:)g(:)g(:)g(:)23 b Ff(21)1015 1113 y Fd(sockunixbuf)o(::)o(ope)o(n)5
3453 b Fe(:)s(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3454 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)18 b
3455 Ff(21)1015 1171 y Fd(sockunixbuf)o(::)o(ope)o(rat)o(or)9 b(=)g
3456 Fe(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
3457 g(:)g(:)g(:)g(:)g(:)h(:)22 b Ff(21)1015 1229 y Fd(sockunixbuf)o(::)o(soc)o
3458 (kun)o(ix)o(buf)t Fe(:)s(:)6 b(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
3459 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)18 b Ff(21)1015 1287
3460 y(stream)c(inet)8 b Fe(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
3461 g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3462 (:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Ff(17)1015 1346 y(stream)14
3463 b(unix)s Fe(:)8 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3464 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3465 (:)g(:)g(:)g(:)g(:)17 b Ff(23)1015 1473 y Fm(T)1015 1539 y
3466 Ff(timeout)d(example)6 b Fe(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
3467 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3468 (:)g(:)g(:)g(:)19 b Ff(48)1015 1597 y(timeouts)5 b Fe(:)j(:)e(:)g(:)g(:)g(:)g
3469 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3470 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)18
3471 b Ff(11)1015 1725 y Fm(U)1015 1791 y Ff(unix)d(address)f(class)t
3472 Fe(:)7 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
3473 (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)17
3474 b Ff(25)1015 1849 y(unix)e(domain)7 b Fe(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g
3475 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
3476 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)20 b Ff(21)1015
3477 1977 y Fm(W)1015 2043 y Ff(write)14 b(timeouts)7 b Fe(:)g(:)f(:)g(:)g(:)h(:)f
3478 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
3479 (:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Ff(11)p
3480 eop
3481 %%Page: -1 55
3482 bop 1937 -58 a Fn(i)0 183 y Fk(T)-7 b(able)15 b(of)g(Con)n(ten)n(ts)0
3483 358 y Fm(So)r(c)n(k)n(et)p Fc(++)22 b Fm(Library)j(Cop)n(yrigh)n(t)f(Notice)
3484 14 b Fb(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3485 (:)h(:)f(:)g(:)36 b Fm(1)0 498 y(Ac)n(kno)n(wledgmen)n(ts)14
3486 b Fb(:)c(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3487 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3488 (:)h(:)f(:)36 b Fm(2)0 638 y(1)67 b(Ov)n(erview)23 b(of)f(So)r(c)n(k)n(et)p
3489 Fc(++)g Fm(Library)c Fb(:)10 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
3490 h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fm(3)0 778 y(2)67
3491 b Fc(sockbuf)21 b Fm(Class)6 b Fb(:)i(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h
3492 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f
3493 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fm(4)149
3494 856 y Fn(2.1)45 b(Constructors)10 b Fa(:)c(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
3495 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3496 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3497 (:)f(:)g(:)g(:)g(:)h(:)24 b Fn(4)149 918 y(2.2)45 b(Destructor)11
3498 b Fa(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3499 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3500 (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)26
3501 b Fn(5)149 980 y(2.3)45 b(Reading)16 b(and)g(W)l(riting)10
3502 b Fa(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3503 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3504 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)24 b Fn(5)149 1043 y(2.4)45
3505 b(Establishing)17 b(connections)5 b Fa(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
3506 h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3507 (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)19 b
3508 Fn(9)149 1105 y(2.5)45 b(Getting)15 b(and)g(Setting)h(So)q(c)o(k)o(et)f
3509 (Options)g Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3510 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)28
3511 b Fn(9)149 1167 y(2.6)45 b(Time)16 b(Outs)f(While)i(Reading)f(and)f(W)l
3512 (riting)9 b Fa(:)g(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
3513 f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)24 b Fn(11)0 1292
3514 y Fm(3)67 b(so)r(c)n(kAddr)23 b(Class)10 b Fb(:)f(:)h(:)g(:)g(:)g(:)h(:)f(:)g
3515 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3516 (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)32 b Fm(13)0 1432
3517 y(4)67 b(so)r(c)n(kinetbuf)23 b(Class)8 b Fb(:)h(:)i(:)f(:)g(:)g(:)g(:)h(:)f
3518 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3519 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)31 b Fm(14)149 1510 y Fn(4.1)45
3520 b(Metho)q(ds)10 b Fa(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3521 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3522 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3523 (:)g(:)g(:)h(:)f(:)25 b Fn(14)149 1572 y(4.2)45 b Fi(inet)17
3524 b Fn(Datagram)c(So)q(c)o(k)o(ets)e Fa(:)c(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3525 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3526 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)26 b
3527 Fn(16)149 1634 y(4.3)45 b Fi(inet)17 b Fn(Stream)e(So)q(c)o(k)o(ets)10
3528 b Fa(:)c(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3529 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3530 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fn(17)0 1759 y Fm(5)67
3531 b(so)r(c)n(kinetaddr)24 b(Class)15 b Fb(:)8 b(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g
3532 (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3533 (:)h(:)f(:)g(:)g(:)g(:)38 b Fm(19)0 1899 y(6)67 b(so)r(c)n(kunixbuf)24
3534 b(Class)13 b Fb(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h
3535 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f
3536 (:)36 b Fm(21)149 1977 y Fn(6.1)45 b(Metho)q(ds)10 b Fa(:)e(:)f(:)g(:)g(:)g
3537 (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3538 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3539 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)25 b
3540 Fn(21)149 2039 y(6.2)45 b Fi(unix)19 b Fn(Datagram)14 b(So)q(c)o(k)o(ets)5
3541 b Fa(:)h(:)h(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3542 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3543 (:)h(:)f(:)g(:)g(:)g(:)20 b Fn(21)149 2101 y(6.3)45 b Fi(unix)19
3544 b Fn(Stream)c(So)q(c)o(k)o(ets)e Fa(:)7 b(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3545 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
3546 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)28
3547 b Fn(23)0 2226 y Fm(7)67 b(so)r(c)n(kunixaddr)25 b(Class)7
3548 b Fb(:)h(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
3549 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30
3550 b Fm(25)0 2366 y(8)67 b(so)r(c)n(kstream)21 b(Classes)10 b
3551 Fb(:)f(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
3552 f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)33
3553 b Fm(26)149 2444 y Fn(8.1)45 b(ioso)q(c)o(kstreams)11 b Fa(:)6
3554 b(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3555 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3556 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fn(26)299
3557 2506 y(8.1.1)44 b(iso)q(c)o(kstream)15 b(Class)10 b Fa(:)d(:)g(:)h(:)f(:)g(:)
3558 g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3559 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)25 b
3560 Fn(26)299 2568 y(8.1.2)44 b(oso)q(c)o(kstream)14 b(Class)5
3561 b Fa(:)i(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3562 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3563 (:)f(:)20 b Fn(27)299 2630 y(8.1.3)44 b(ioso)q(c)o(kstream)14
3564 b(Class)9 b Fa(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
3565 f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3566 (:)f(:)g(:)24 b Fn(27)p eop
3567 %%Page: -2 56
3568 bop 1925 -58 a Fn(ii)149 42 y(8.2)45 b(ioso)q(c)o(kinet)16
3569 b(Stream)f(Classes)e Fa(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3570 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3571 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fn(28)299 104 y(8.2.1)44
3572 b(iso)q(c)o(kinet)8 b Fa(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3573 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3574 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23
3575 b Fn(28)299 166 y(8.2.2)44 b(ioso)q(c)o(kinet)16 b(examples)10
3576 b Fa(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3577 (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)25
3578 b Fn(29)149 228 y(8.3)45 b(ioso)q(c)o(kunix)16 b(Classes)5
3579 b Fa(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3580 (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3581 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)20 b Fn(30)299 291
3582 y(8.3.1)44 b(iso)q(c)o(kunix)17 b(class)10 b Fa(:)d(:)g(:)h(:)f(:)g(:)g(:)g
3583 (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3584 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
3585 b Fn(31)299 353 y(8.3.2)44 b(ioso)q(c)o(kunix)16 b(examples)t
3586 Fa(:)9 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3587 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)19
3588 b Fn(31)0 477 y Fm(9)67 b(pip)r(estream)23 b(Classes)10 b Fb(:)e(:)i(:)h(:)f
3589 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
3590 (:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fm(33)149 555
3591 y Fn(9.1)45 b(pip)q(estream)16 b(as)f(pip)q(e)10 b Fa(:)f(:)e(:)g(:)g(:)h(:)f
3592 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3593 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h
3594 (:)f(:)g(:)25 b Fn(34)149 617 y(9.2)45 b(pip)q(estream)16 b(as)f(so)q(c)o(k)o
3595 (etpair)e Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)
3596 g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3597 (:)g(:)g(:)h(:)f(:)g(:)28 b Fn(34)149 680 y(9.3)45 b(pip)q(estream)16
3598 b(as)f(p)q(op)q(en)e Fa(:)7 b(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3599 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3600 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fn(35)0
3601 804 y Fm(10)66 b(F)-6 b(ork)24 b(Class)13 b Fb(:)c(:)i(:)f(:)g(:)g(:)g(:)h(:)
3602 f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3603 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)36
3604 b Fm(37)149 882 y Fn(10.1)45 b(F)l(ork)14 b(Example)6 b Fa(:)i(:)f(:)h(:)f(:)
3605 g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3606 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3607 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)21 b Fn(38)0 1007 y Fm(11)66
3608 b(Class)22 b(proto)r(col)11 b Fb(:)f(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3609 (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3610 (:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fm(40)149 1084 y Fn(11.1)45
3611 b(Class)15 b(proto)q(col::proto)q(colbuf)10 b Fa(:)c(:)i(:)f(:)g(:)g(:)g(:)h
3612 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3613 (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)24 b Fn(40)0
3614 1209 y Fm(12)66 b(Ec)n(ho)23 b(Class)8 b Fb(:)h(:)h(:)h(:)f(:)g(:)g(:)h(:)f
3615 (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
3616 (:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)31
3617 b Fm(42)299 1287 y Fn(12.0.1)43 b(tsec)o(ho.C)10 b Fa(:)c(:)i(:)f(:)g(:)g(:)h
3618 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3619 (:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3620 (:)g(:)h(:)24 b Fn(42)299 1349 y(12.0.2)43 b(tcec)o(ho.C)8
3621 b Fa(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3622 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3623 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)23 b Fn(42)0 1474 y
3624 Fm(13)66 b(SMTP)23 b(Class)9 b Fb(:)g(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3625 (:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
3626 (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)32 b Fm(44)299 1551
3627 y Fn(13.0.1)43 b(tcsm)o(tp.C)13 b Fa(:)7 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)
3628 f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3629 (:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)28
3630 b Fn(45)0 1676 y Fm(14)66 b(Error)24 b(Handling)7 b Fb(:)12
3631 b(:)e(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g
3632 (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)30
3633 b Fm(47)0 1816 y(15)66 b(Pitfalls)11 b Fb(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g
3634 (:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
3635 (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)34
3636 b Fm(48)0 1956 y(Index)7 b Fb(:)12 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h
3637 (:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f
3638 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g
3639 (:)g(:)h(:)f(:)30 b Fm(50)p eop
3640 %%Trailer
3641 end
3642 userdict /end-hook known{end-hook}if
3643 %%EOF