%PDF-1.2
2 0 obj
<< /S /GoTo /D (1.0) >>
endobj
4 0 obj
(Table of Contents)
endobj
6 0 obj
<< /S /GoTo /D (1.1.1) >>
endobj
8 0 obj
(1. Intro)
endobj
10 0 obj
<< /S /GoTo /D (1.1.1.2) >>
endobj
12 0 obj
(1.1. Audience)
endobj
14 0 obj
<< /S /GoTo /D (1.1.2.2) >>
endobj
16 0 obj
(1.2. Platform and Compiler)
endobj
18 0 obj
<< /S /GoTo /D (1.1.3.2) >>
endobj
20 0 obj
(1.3. Official Homepage)
endobj
22 0 obj
<< /S /GoTo /D (1.1.4.2) >>
endobj
24 0 obj
(1.4. Note for Solaris/SunOS Programmers)
endobj
26 0 obj
<< /S /GoTo /D (1.1.5.2) >>
endobj
28 0 obj
(1.5. Note for Windows Programmers)
endobj
30 0 obj
<< /S /GoTo /D (1.1.6.2) >>
endobj
32 0 obj
(1.6. Email Policy)
endobj
34 0 obj
<< /S /GoTo /D (1.1.7.2) >>
endobj
36 0 obj
(1.7. Mirroring)
endobj
38 0 obj
<< /S /GoTo /D (1.1.8.2) >>
endobj
40 0 obj
(1.8. Note for Translators)
endobj
42 0 obj
<< /S /GoTo /D (1.1.9.2) >>
endobj
44 0 obj
(1.9. Copyright and Distribution)
endobj
46 0 obj
<< /S /GoTo /D (1.2.1) >>
endobj
48 0 obj
(2. What is a socket?)
endobj
50 0 obj
<< /S /GoTo /D (1.2.10.2) >>
endobj
52 0 obj
(2.1. Two Types of Internet Sockets)
endobj
54 0 obj
<< /S /GoTo /D (1.2.11.2) >>
endobj
56 0 obj
(2.2. Low level Nonsense and Network Theory)
endobj
58 0 obj
<< /S /GoTo /D (1.3.1) >>
endobj
60 0 obj
(3. structs and Data Handling)
endobj
62 0 obj
<< /S /GoTo /D (1.3.12.2) >>
endobj
64 0 obj
(3.1. Convert the Natives!)
endobj
66 0 obj
<< /S /GoTo /D (1.3.13.2) >>
endobj
68 0 obj
(3.2. IP Addresses and How to Deal With Them)
endobj
70 0 obj
<< /S /GoTo /D (1.4.1) >>
endobj
72 0 obj
(4. System Calls or Bust)
endobj
74 0 obj
<< /S /GoTo /D (1.4.14.2) >>
endobj
76 0 obj
(4.1. socket\(\)--Get the File Descriptor!)
endobj
78 0 obj
<< /S /GoTo /D (1.4.15.2) >>
endobj
80 0 obj
(4.2. bind\(\)--What port am I on?)
endobj
82 0 obj
<< /S /GoTo /D (1.4.16.2) >>
endobj
84 0 obj
(4.3. connect\(\)--Hey, you!)
endobj
86 0 obj
<< /S /GoTo /D (1.4.17.2) >>
endobj
88 0 obj
(4.4. listen\(\)--Will somebody please call me?)
endobj
90 0 obj
<< /S /GoTo /D (1.4.18.2) >>
endobj
92 0 obj
(4.5. accept\(\)--"Thank you for calling port 3490.")
endobj
94 0 obj
<< /S /GoTo /D (1.4.19.2) >>
endobj
96 0 obj
(4.6. send\(\) and recv\(\)--Talk to me, baby!)
endobj
98 0 obj
<< /S /GoTo /D (1.4.20.2) >>
endobj
100 0 obj
(4.7. sendto\(\) and recvfrom\(\)--Talk to me, DGRAM-style)
endobj
102 0 obj
<< /S /GoTo /D (1.4.21.2) >>
endobj
104 0 obj
(4.8. close\(\) and shutdown\(\)--Get outta my face!)
endobj
106 0 obj
<< /S /GoTo /D (1.4.22.2) >>
endobj
108 0 obj
(4.9. getpeername\(\)--Who are you?)
endobj
110 0 obj
<< /S /GoTo /D (1.4.23.2) >>
endobj
112 0 obj
(4.10. gethostname\(\)--Who am I?)
endobj
114 0 obj
<< /S /GoTo /D (1.4.24.2) >>
endobj
116 0 obj
(4.11. DNS--You say "whitehouse.gov", I say "198.137.240.92")
endobj
118 0 obj
<< /S /GoTo /D (1.5.1) >>
endobj
120 0 obj
(5. Client-Server Background)
endobj
122 0 obj
<< /S /GoTo /D (1.5.25.2) >>
endobj
124 0 obj
(5.1. A Simple Stream Server)
endobj
126 0 obj
<< /S /GoTo /D (1.5.26.2) >>
endobj
128 0 obj
(5.2. A Simple Stream Client)
endobj
130 0 obj
<< /S /GoTo /D (1.5.27.2) >>
endobj
132 0 obj
(5.3. Datagram Sockets)
endobj
134 0 obj
<< /S /GoTo /D (1.6.1) >>
endobj
136 0 obj
(6. Slightly Advanced Techniques)
endobj
138 0 obj
<< /S /GoTo /D (1.6.28.2) >>
endobj
140 0 obj
(6.1. Blocking)
endobj
142 0 obj
<< /S /GoTo /D (1.6.29.2) >>
endobj
144 0 obj
(6.2. select\(\)--Synchronous I/O Multiplexing)
endobj
146 0 obj
<< /S /GoTo /D (1.6.30.2) >>
endobj
148 0 obj
(6.3. Handling Partial send\(\)s)
endobj
150 0 obj
<< /S /GoTo /D (1.6.31.2) >>
endobj
152 0 obj
(6.4. Son of Data Encapsulation)
endobj
154 0 obj
<< /S /GoTo /D (1.7.1) >>
endobj
156 0 obj
(7. More References)
endobj
158 0 obj
<< /S /GoTo /D (1.7.32.2) >>
endobj
160 0 obj
(7.1. man Pages)
endobj
162 0 obj
<< /S /GoTo /D (1.7.33.2) >>
endobj
164 0 obj
(7.2. Books)
endobj
166 0 obj
<< /S /GoTo /D (1.7.34.2) >>
endobj
168 0 obj
(7.3. Web References)
endobj
170 0 obj
<< /S /GoTo /D (1.7.35.2) >>
endobj
172 0 obj
(7.4. RFCs)
endobj
174 0 obj
<< /S /GoTo /D (1.8.1) >>
endobj
176 0 obj
(8. Common Questions)
endobj
178 0 obj
<< /S /GoTo /D (1.9.1) >>
endobj
180 0 obj
(9. Disclaimer and Call for Help)
endobj
182 0 obj
<< /S /GoTo /D [181 0 R /Fit ] >>
endobj
207 0 obj <<
/Length 208 0 R
/Filter /FlateDecode
>>
stream
xnqy
T Co6qvovm/YKAI;-;Ԍ"Gvbqcw!G҃|C9?rH#:JF=9VKu~kBYxvScSat4"op'*)#ltEOhN*IOʃ/v-įx,5bQVG|F*MKElE m'KoYMUt^=wRtm8kN"RG3ZH#nʼG_r]J,Ӳɻ8H;~STneKZ$"vVQ}opޔG!evHkMt`3~+1mY}wʶsMe`@=Dq*]Y$E^!k[4AYa$Y8ز?/96B>gUٕofl8Xm(#HO0Y,;dױgnFۅzhCjw_<6q_7Ҧv۠M,~djqu>gzy&㿽xN=u.ж|]eju'Ddn'p-QǎϪx++1EՉYhv6wZQY䫧b[o\>4E~Oz,6W
)yz^l<6g}1!և]5zD$rG
C9ߞ\|R=S8v_u)wQ?SdcfGt
*
*8*
*
-҉
*
*B:QATPATTPATPADTPATP!rMMyjʷhכg3"K吉VMtCګ
WʢqX+AϙA/;8*
*Bਠ
*
*tH'*
*
DTPATP!pTPATPA:ZTPATP*:C5ЌRn_fBy/=vi9/d
pgHb
y
Bਠ
*
*tH'*
*
DTPATP!pTPATPA:ZTPA/R -E["PDfe>+vEq]zRJoTPAGTPATPE:QATPATH'*
*
*
*"ʝUz*:q *uWú{<oY[e˦>jŢhK/ӈS̠J)5,ܼBϗt
*
*8*
*
*
*"
*_GGm'V[jbqYo[cL"dJuz[LQATPA҉
*
*Bਠ
*
*tH'*
*
DTP473fZ<l"|38;lf 0=QG:QATPATH'*
*
*
*"
*
*TPATPAQAVO$ٍKɒPJl)@l,)R>m
*
=q҉
*
*B:QATPATTPATPADTPATP!
*
*w<u5`WS[p
tX7~aɫvwun%"MrM
*
*
*BGt
*
*NTPATPAGTPATPE:QATPESc^4ڒGDF<::˶k%g]YWJeE+2OZTPATPA҉
*
*Bਠ
*
*tH'*
*
DTPA{-
5WCDZPv4Vh?vVs*3ue#ЋOFHIvr9sk>'GTP!pTPATPA'
*
-҉
*
*Bਠ
*
*N:QATPA:ZQ\g>KcR>e2Ohګ/8?-Bi_}?U]TE_gJқdt*L:Qz
NTPATPA҉
*
*Bਠ
*
*N:QATPATn~GT*YBeoyy3v\ݺjox{HuGܜEݜ_ajaՐIj` TPA҉
*
*Bਠ
*
*tH'*
*
]l]ɍcl1Ro9Q^R[7]s66J$]mtq[xw_qeutirG2PNH^;؋igvTPATPAt
*
*8*
*
-҉
*
*B:QATPATn;3^qE:Uj-dQ]MLm:;S]a3,sLq+UMLqK*
DTPATP!pTPATPA'
*
*TPATPAQATf[0#D
1T"ۗP
|ppm[lcKAކ}l~ͫbq%i"ldj
*
t
*
*8*
*
NTPATH&](vɀLq,20iE6@R|Pf<:v[FTPATx!DTPATP!
*
*
*
*BGt
*
*NTPA8+&U5Nkِ"'{U\6Rk*a 'et6ӢS:~I9Kv֔]pi28Cx#nk6gPATP!
*
*
*
*BGt
*
*NTPA;QէNn2n'endstream
endobj
208 0 obj
3087
endobj
181 0 obj <<
/Type /Page
/Contents 207 0 R
/Resources 206 0 R
/MediaBox [0 0 609.711 789.038]
/Parent 251 0 R
/Annots [ 211 0 R 213 0 R 214 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 250 0 R ]
>> endobj
211 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [71.731 345.779 103.651 352.762]
/Subtype /Link
/A << /S /GoTo /D (intro) >>
>> endobj
213 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 345.779 537.981 352.762]
/Subtype /Link
/A << /S /GoTo /D (intro) >>
>> endobj
214 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 330.456 151.252 337.31]
/Subtype /Link
/A << /S /GoTo /D (45) >>
>> endobj
216 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 330.456 537.981 337.31]
/Subtype /Link
/A << /S /GoTo /D (45) >>
>> endobj
217 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 315.448 204.95 324.359]
/Subtype /Link
/A << /S /GoTo /D (51) >>
>> endobj
218 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 315.448 537.981 324.359]
/Subtype /Link
/A << /S /GoTo /D (51) >>
>> endobj
219 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 302.496 188.91 311.408]
/Subtype /Link
/A << /S /GoTo /D (57) >>
>> endobj
220 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 302.496 537.981 311.408]
/Subtype /Link
/A << /S /GoTo /D (57) >>
>> endobj
221 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 289.545 263.888 298.456]
/Subtype /Link
/A << /S /GoTo /D (solaris) >>
>> endobj
222 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 289.545 537.981 298.456]
/Subtype /Link
/A << /S /GoTo /D (solaris) >>
>> endobj
223 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 276.594 242.748 285.505]
/Subtype /Link
/A << /S /GoTo /D (windows) >>
>> endobj
224 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 276.594 537.981 285.505]
/Subtype /Link
/A << /S /GoTo /D (windows) >>
>> endobj
225 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 263.642 164.681 272.553]
/Subtype /Link
/A << /S /GoTo /D (emailpolicy) >>
>> endobj
226 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 263.642 537.981 272.553]
/Subtype /Link
/A << /S /GoTo /D (emailpolicy) >>
>> endobj
227 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 250.691 152.368 259.602]
/Subtype /Link
/A << /S /GoTo /D (96) >>
>> endobj
228 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 250.691 537.981 259.602]
/Subtype /Link
/A << /S /GoTo /D (96) >>
>> endobj
229 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 239.797 193.513 246.651]
/Subtype /Link
/A << /S /GoTo /D (100) >>
>> endobj
230 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 239.797 537.981 246.651]
/Subtype /Link
/A << /S /GoTo /D (100) >>
>> endobj
231 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 224.788 220.71 233.699]
/Subtype /Link
/A << /S /GoTo /D (105) >>
>> endobj
232 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 224.788 537.981 233.699]
/Subtype /Link
/A << /S /GoTo /D (105) >>
>> endobj
233 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [71.731 211.483 156.034 218.467]
/Subtype /Link
/A << /S /GoTo /D (theory) >>
>> endobj
234 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 211.483 537.981 218.467]
/Subtype /Link
/A << /S /GoTo /D (theory) >>
>> endobj
235 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 194.103 234.13 203.015]
/Subtype /Link
/A << /S /GoTo /D (twotypes) >>
>> endobj
236 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 194.103 537.981 203.015]
/Subtype /Link
/A << /S /GoTo /D (twotypes) >>
>> endobj
237 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 181.152 279.161 190.063]
/Subtype /Link
/A << /S /GoTo /D (lowlevel) >>
>> endobj
238 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 181.152 537.981 190.063]
/Subtype /Link
/A << /S /GoTo /D (lowlevel) >>
>> endobj
239 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [71.731 165.944 201.722 174.83]
/Subtype /Link
/A << /S /GoTo /D (structs) >>
>> endobj
241 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 165.944 537.981 174.83]
/Subtype /Link
/A << /S /GoTo /D (structs) >>
>> endobj
242 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 152.405 195.137 159.378]
/Subtype /Link
/A << /S /GoTo /D (convert) >>
>> endobj
243 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [532.999 152.405 537.981 159.378]
/Subtype /Link
/A << /S /GoTo /D (convert) >>
>> endobj
244 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 139.573 283.146 146.427]
/Subtype /Link
/A << /S /GoTo /D (ipaddr) >>
>> endobj
245 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [528.018 139.573 537.981 146.427]
/Subtype /Link
/A << /S /GoTo /D (ipaddr) >>
>> endobj
246 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [71.731 122.308 169.971 131.194]
/Subtype /Link
/A << /S /GoTo /D (syscalls) >>
>> endobj
247 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [528.018 122.308 537.981 131.194]
/Subtype /Link
/A << /S /GoTo /D (syscalls) >>
>> endobj
248 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [95.641 106.831 255.998 115.742]
/Subtype /Link
/A << /S /GoTo /D (socket) >>
>> endobj
250 0 obj <<
/Type /Annot
/Border [0 0 0] /H /I /C [1 0 0]
/Rect [528.018 106.831 537.981 115.742]
/Subtype /Link
/A << /S /GoTo /D (socket) >>
>> endobj
205 0 obj <<
/D [181 0 R /XYZ 71.731 717.307 null]
>> endobj
183 0 obj <<
/D [181 0 R /XYZ 71.731 669.487 null]
>> endobj
184 0 obj <<
/D [181 0 R /XYZ 71.731 669.487 null]
>> endobj
185 0 obj <<
/D [181 0 R /XYZ 71.731 484.313 null]
>> endobj
1 0 obj <<
/D [181 0 R /XYZ 215.564 367.457 null]
>> endobj
206 0 obj <<
/Font << /F29 209 0 R /F30 209 0 R /F31 209 0 R /F32 209 0 R /F33 210 0 R /F34 212 0 R /F35 215 0 R /F36 240 0 R /F37 249 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
280 0 obj <<
/Length 281 0 R
/Filter /FlateDecode
>>
stream
xn
|