File: internet.Rout.save

package info (click to toggle)
r-base 3.1.1-1%2Bdeb8u1
  • links: PTS
  • area: main
  • in suites: jessie
  • size: 85,436 kB
  • ctags: 35,389
  • sloc: ansic: 306,779; fortran: 91,908; sh: 11,216; makefile: 5,311; yacc: 4,994; tcl: 4,562; objc: 746; perl: 655; asm: 553; java: 31; sed: 6
file content (367 lines) | stat: -rw-r--r-- 14,236 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367

R version 3.1.1 RC (2014-07-09 r66112) -- "Sock it to Me"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> ## These are tests that require socket and internet functionality, and
> ## a working Internet connection.
> ## We attempt to test for those.
> 
> if(!capabilities()["http/ftp"]) {
+     warning("no internet capabilities")
+     q()
+ }
> 
> if(.Platform$OS.type == "unix" &&
+    is.null(nsl("cran.r-project.org"))) q()
> 
> # test do_download.
> nrow(available.packages(contrib.url("http://cran.r-project.org")))
[1] 5714
> 
> # test url connections on http
> zz <- url("http://cran.r-project.org/")
> readLines(zz)
 [1] "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">"
 [2] "<html>"                                                                                                   
 [3] "<head>"                                                                                                   
 [4] "<title>The Comprehensive R Archive Network</title>"                                                       
 [5] "<META HTTP-EQUIV=\"content-type\" CONTENT=\"text/html; charset=utf-8\">"                                  
 [6] "<link rel=\"icon\" href=\"favicon.ico\" type=\"image/x-icon\">"                                           
 [7] "<link rel=\"shortcut icon\" href=\"favicon.ico\" type=\"image/x-icon\">"                                  
 [8] "<link rel=\"stylesheet\" type=\"text/css\" href=\"R.css\">"                                               
 [9] "</head>"                                                                                                  
[10] ""                                                                                                         
[11] "<FRAMESET cols=\"1*, 4*\" border=0>"                                                                      
[12] "<FRAMESET rows=\"120, 1*\">"                                                                              
[13] "<FRAME src=\"logo.html\" name=\"logo\" frameborder=0>"                                                    
[14] "<FRAME src=\"navbar.html\" name=\"contents\" frameborder=0>"                                              
[15] "</FRAMESET>"                                                                                              
[16] "<FRAME src=\"banner.shtml\" name=\"banner\" frameborder=0>"                                               
[17] "<noframes>"                                                                                               
[18] "<h1>The Comprehensive R Archive Network</h1>"                                                             
[19] ""                                                                                                         
[20] "Your browser seems not to support frames,"                                                                
[21] "here is the <A href=\"navbar.html\">contents page</A> of CRAN."                                           
[22] "</noframes>"                                                                                              
[23] "</FRAMESET>"                                                                                              
> close(zz)
> 
> ## check graceful failure:
> try(zz <- url("http://foo.bar", "r"))
> 
> # and via read.table, test http and ftp.
> 
> read.table("http://www.stats.ox.ac.uk/pub/datasets/csb/ch11b.dat")
     V1  V2   V3    V4 V5
1     1 307  930 36.58  0
2     2 307  940 36.73  0
3     3 307  950 36.93  0
4     4 307 1000 37.15  0
5     5 307 1010 37.23  0
6     6 307 1020 37.24  0
7     7 307 1030 37.24  0
8     8 307 1040 36.90  0
9     9 307 1050 36.95  0
10   10 307 1100 36.89  0
11   11 307 1110 36.95  0
12   12 307 1120 37.00  0
13   13 307 1130 36.90  0
14   14 307 1140 36.99  0
15   15 307 1150 36.99  0
16   16 307 1200 37.01  0
17   17 307 1210 37.04  0
18   18 307 1220 37.04  0
19   19 307 1230 37.14  0
20   20 307 1240 37.07  0
21   21 307 1250 36.98  0
22   22 307 1300 37.01  0
23   23 307 1310 36.97  0
24   24 307 1320 36.97  0
25   25 307 1330 37.12  0
26   26 307 1340 37.13  0
27   27 307 1350 37.14  0
28   28 307 1400 37.15  0
29   29 307 1410 37.17  0
30   30 307 1420 37.12  0
31   31 307 1430 37.12  0
32   32 307 1440 37.17  0
33   33 307 1450 37.28  0
34   34 307 1500 37.28  0
35   35 307 1510 37.44  0
36   36 307 1520 37.51  0
37   37 307 1530 37.64  0
38   38 307 1540 37.51  0
39   39 307 1550 37.98  1
40   40 307 1600 38.02  1
41   41 307 1610 38.00  1
42   42 307 1620 38.24  1
43   43 307 1630 38.10  1
44   44 307 1640 38.24  1
45   45 307 1650 38.11  1
46   46 307 1700 38.02  1
47   47 307 1710 38.11  1
48   48 307 1720 38.01  1
49   49 307 1730 37.91  1
50   50 307 1740 37.96  1
51   51 307 1750 38.03  1
52   52 307 1800 38.17  1
53   53 307 1810 38.19  1
54   54 307 1820 38.18  1
55   55 307 1830 38.15  1
56   56 307 1840 38.04  1
57   57 307 1850 37.96  1
58   58 307 1900 37.84  1
59   59 307 1910 37.83  1
60   60 307 1920 37.84  1
61   61 307 1930 37.74  1
62   62 307 1940 37.76  1
63   63 307 1950 37.76  1
64   64 307 2000 37.64  1
65   65 307 2010 37.63  1
66   66 307 2020 38.06  1
67   67 307 2030 38.19  1
68   68 307 2040 38.35  1
69   69 307 2050 38.25  1
70   70 307 2100 37.86  1
71   71 307 2110 37.95  1
72   72 307 2120 37.95  1
73   73 307 2130 37.76  1
74   74 307 2140 37.60  1
75   75 307 2150 37.89  1
76   76 307 2200 37.86  1
77   77 307 2210 37.71  1
78   78 307 2220 37.78  1
79   79 307 2230 37.82  1
80   80 307 2240 37.76  1
81   81 307 2250 37.81  1
82   82 307 2300 37.84  1
83   83 307 2310 38.01  1
84   84 307 2320 38.10  1
85   85 307 2330 38.15  1
86   86 307 2340 37.92  1
87   87 307 2350 37.64  1
88   88 308    0 37.70  1
89   89 308   10 37.46  1
90   90 308   20 37.41  1
91   91 308   30 37.46  1
92   92 308   40 37.56  1
93   93 308   50 37.55  1
94   94 308  100 37.75  1
95   95 308  110 37.76  1
96   96 308  120 37.73  1
97   97 308  130 37.77  1
98   98 308  140 38.01  1
99   99 308  150 38.04  1
100 100 308  200 38.07  1
> read.table("ftp://ftp.stats.ox.ac.uk/pub/datasets/csb/ch11b.dat")
     V1  V2   V3    V4 V5
1     1 307  930 36.58  0
2     2 307  940 36.73  0
3     3 307  950 36.93  0
4     4 307 1000 37.15  0
5     5 307 1010 37.23  0
6     6 307 1020 37.24  0
7     7 307 1030 37.24  0
8     8 307 1040 36.90  0
9     9 307 1050 36.95  0
10   10 307 1100 36.89  0
11   11 307 1110 36.95  0
12   12 307 1120 37.00  0
13   13 307 1130 36.90  0
14   14 307 1140 36.99  0
15   15 307 1150 36.99  0
16   16 307 1200 37.01  0
17   17 307 1210 37.04  0
18   18 307 1220 37.04  0
19   19 307 1230 37.14  0
20   20 307 1240 37.07  0
21   21 307 1250 36.98  0
22   22 307 1300 37.01  0
23   23 307 1310 36.97  0
24   24 307 1320 36.97  0
25   25 307 1330 37.12  0
26   26 307 1340 37.13  0
27   27 307 1350 37.14  0
28   28 307 1400 37.15  0
29   29 307 1410 37.17  0
30   30 307 1420 37.12  0
31   31 307 1430 37.12  0
32   32 307 1440 37.17  0
33   33 307 1450 37.28  0
34   34 307 1500 37.28  0
35   35 307 1510 37.44  0
36   36 307 1520 37.51  0
37   37 307 1530 37.64  0
38   38 307 1540 37.51  0
39   39 307 1550 37.98  1
40   40 307 1600 38.02  1
41   41 307 1610 38.00  1
42   42 307 1620 38.24  1
43   43 307 1630 38.10  1
44   44 307 1640 38.24  1
45   45 307 1650 38.11  1
46   46 307 1700 38.02  1
47   47 307 1710 38.11  1
48   48 307 1720 38.01  1
49   49 307 1730 37.91  1
50   50 307 1740 37.96  1
51   51 307 1750 38.03  1
52   52 307 1800 38.17  1
53   53 307 1810 38.19  1
54   54 307 1820 38.18  1
55   55 307 1830 38.15  1
56   56 307 1840 38.04  1
57   57 307 1850 37.96  1
58   58 307 1900 37.84  1
59   59 307 1910 37.83  1
60   60 307 1920 37.84  1
61   61 307 1930 37.74  1
62   62 307 1940 37.76  1
63   63 307 1950 37.76  1
64   64 307 2000 37.64  1
65   65 307 2010 37.63  1
66   66 307 2020 38.06  1
67   67 307 2030 38.19  1
68   68 307 2040 38.35  1
69   69 307 2050 38.25  1
70   70 307 2100 37.86  1
71   71 307 2110 37.95  1
72   72 307 2120 37.95  1
73   73 307 2130 37.76  1
74   74 307 2140 37.60  1
75   75 307 2150 37.89  1
76   76 307 2200 37.86  1
77   77 307 2210 37.71  1
78   78 307 2220 37.78  1
79   79 307 2230 37.82  1
80   80 307 2240 37.76  1
81   81 307 2250 37.81  1
82   82 307 2300 37.84  1
83   83 307 2310 38.01  1
84   84 307 2320 38.10  1
85   85 307 2330 38.15  1
86   86 307 2340 37.92  1
87   87 307 2350 37.64  1
88   88 308    0 37.70  1
89   89 308   10 37.46  1
90   90 308   20 37.41  1
91   91 308   30 37.46  1
92   92 308   40 37.56  1
93   93 308   50 37.55  1
94   94 308  100 37.75  1
95   95 308  110 37.76  1
96   96 308  120 37.73  1
97   97 308  130 37.77  1
98   98 308  140 38.01  1
99   99 308  150 38.04  1
100 100 308  200 38.07  1
> 
> ## everything from here on is directly over sockets
> if(!capabilities("sockets")) stop("no socket capabilities")
> 
> # do the same thing via sockets (cut-down httpclient)
> httpget <- function (url, port = 80)
+ {
+     urlel <- strsplit(url, "/")[[1]]
+     if (urlel[1] != "http:") stop("Not an http:// URL")
+     host <- urlel[3]
+     rurl <- paste(c("", urlel[-(1:3)]), collapse = "/")
+     a <- make.socket(host, port = port)
+     on.exit(close.socket(a))
+     headreq <- paste("HEAD", rurl, "HTTP/1.0\r\nConnection: Keep-Alive\r\nAccept: text/plain\r\n\r\n")
+     write.socket(a, headreq)
+     head <- read.socket(a, maxlen = 8000)
+     b <- strsplit(head, "\n")[[1]]
+     if (length(grep("200 OK", b[1])) == 0) stop(b[1])
+     len <- as.numeric(strsplit(grep("Content-Length", b, value = TRUE),
+                                ":")[[1]][2])
+     getreq <- paste("GET", rurl, "HTTP/1.0\r\nConnection: Keep-Alive\r\nAccept: text/plain\r\n\r\n")
+     write.socket(a, getreq)
+     junk <- read.socket(a, maxlen = nchar(head))
+     data <- ""
+     b <- strsplit(c(head, junk), "\n")
+     nn <- length(b[[1]])
+     if (length(b[[2]]) > nn)
+         data <- paste(b[[2]][-(1:nn)], collapse = "\n")
+     while (nchar(data) < len) {
+         data <- paste(data, read.socket(a, maxlen = len - nchar(data)),
+                       sep = "")
+     }
+     strsplit(data, "\n")[[1]]
+ }
> 
> if(nzchar(Sys.getenv("http_proxy")) || nzchar(Sys.getenv("HTTP_PROXY"))) {
+     cat("http proxy is set, so skip test of http over sockets\n")
+ } else {
+     httpget("http://www.stats.ox.ac.uk/pub/datasets/csb/ch11b.dat")
+ }
  [1] "001 307 0930 36.58 0"  "002 307 0940 36.73 0"  "003 307 0950 36.93 0" 
  [4] "004 307 1000 37.15 0"  "005 307 1010 37.23 0"  "006 307 1020 37.24 0" 
  [7] "007 307 1030 37.24 0"  "008 307 1040 36.90 0"  "009 307 1050 36.95 0" 
 [10] "010 307 1100 36.89 0"  "011 307 1110 36.95 0"  "012 307 1120 37.00 0" 
 [13] "013 307 1130 36.90 0"  "014 307 1140 36.99 0"  "015 307 1150 36.99 0" 
 [16] "016 307 1200 37.01 0"  "017 307 1210 37.04 0"  "018 307 1220 37.04 0" 
 [19] "019 307 1230 37.14 0"  "020 307 1240 37.07 0"  "021 307 1250 36.98 0" 
 [22] "022 307 1300 37.01 0"  "023 307 1310 36.97 0"  "024 307 1320 36.97 0" 
 [25] "025 307 1330 37.12 0"  "026 307 1340 37.13 0"  "027 307 1350 37.14 0" 
 [28] "028 307 1400 37.15 0"  "029 307 1410 37.17 0"  "030 307 1420 37.12 0" 
 [31] "031 307 1430 37.12 0"  "032 307 1440 37.17 0"  "033 307 1450 37.28 0" 
 [34] "034 307 1500 37.28 0"  "035 307 1510 37.44 0"  "036 307 1520 37.51 0" 
 [37] "037 307 1530 37.64 0"  "038 307 1540 37.51 0"  "039 307 1550 37.98 1" 
 [40] "040 307 1600 38.02 1"  "041 307 1610 38.00 1 " "042 307 1620 38.24 1 "
 [43] "043 307 1630 38.10 1"  "044 307 1640 38.24 1"  "045 307 1650 38.11 1" 
 [46] "046 307 1700 38.02 1"  "047 307 1710 38.11 1"  "048 307 1720 38.01 1" 
 [49] "049 307 1730 37.91 1"  "050 307 1740 37.96 1"  "051 307 1750 38.03 1" 
 [52] "052 307 1800 38.17 1"  "053 307 1810 38.19 1"  "054 307 1820 38.18 1" 
 [55] "055 307 1830 38.15 1"  "056 307 1840 38.04 1"  "057 307 1850 37.96 1" 
 [58] "058 307 1900 37.84 1"  "059 307 1910 37.83 1"  "060 307 1920 37.84 1" 
 [61] "061 307 1930 37.74 1"  "062 307 1940 37.76 1"  "063 307 1950 37.76 1" 
 [64] "064 307 2000 37.64 1"  "065 307 2010 37.63 1"  "066 307 2020 38.06 1" 
 [67] "067 307 2030 38.19 1"  "068 307 2040 38.35 1"  "069 307 2050 38.25 1" 
 [70] "070 307 2100 37.86 1"  "071 307 2110 37.95 1"  "072 307 2120 37.95 1" 
 [73] "073 307 2130 37.76 1"  "074 307 2140 37.60 1"  "075 307 2150 37.89 1" 
 [76] "076 307 2200 37.86 1"  "077 307 2210 37.71 1"  "078 307 2220 37.78 1" 
 [79] "079 307 2230 37.82 1"  "080 307 2240 37.76 1"  "081 307 2250 37.81 1" 
 [82] "082 307 2300 37.84 1"  "083 307 2310 38.01 1"  "084 307 2320 38.10 1" 
 [85] "085 307 2330 38.15 1"  "086 307 2340 37.92 1"  "087 307 2350 37.64 1" 
 [88] "088 308 0000 37.70 1"  "089 308 0010 37.46 1"  "090 308 0020 37.41 1" 
 [91] "091 308 0030 37.46 1"  "092 308 0040 37.56 1"  "093 308 0050 37.55 1" 
 [94] "094 308 0100 37.75 1"  "095 308 0110 37.76 1"  "096 308 0120 37.73 1" 
 [97] "097 308 0130 37.77 1"  "098 308 0140 38.01 1"  "099 308 0150 38.04 1" 
[100] "100 308 0200 38.07 1" 
> 
> finger <- function(user, host = "localhost", port = 79, print = TRUE)
+ {
+     if (!is.character(user))
+         stop("user name must be a string")
+     user <- paste(user,"\r\n")
+     socket <- make.socket(host, port)
+     on.exit(close.socket(socket))
+     write.socket(socket, user)
+     output <- character(0)
+     repeat{
+         ss <- read.socket(socket)
+         if (ss == "") break
+         output <- paste(output, ss)
+     }
+     close.socket(socket)
+     if (print) cat(output)
+     invisible(output)
+ }
> try(finger("root"))  ## only works if your site provides a finger daemon
socket error: Connection refused
Error in make.socket(host, port) : socket not established
>