| % File src/library/utils/man/read.socket.Rd |
| % Part of the R package, https://www.R-project.org |
| % Copyright 1995-2012 R Core Team |
| % Distributed under GPL 2 or later |
| |
| \name{read.socket} |
| \title{ Read from or Write to a Socket} |
| \usage{ |
| read.socket(socket, maxlen = 256L, loop = FALSE) |
| write.socket(socket, string) |
| } |
| \alias{read.socket} |
| \alias{write.socket} |
| \arguments{ |
| \item{socket}{a socket object.} |
| \item{maxlen}{maximum length (in bytes) of string to read.} |
| \item{loop}{wait for ever if there is nothing to read?} |
| \item{string}{string to write to socket.} |
| } |
| \description{ |
| \code{read.socket} reads a string from the specified socket, |
| \code{write.socket} writes to the specified socket. There is very |
| little error checking done by either. |
| } |
| \value{ |
| \code{read.socket} returns the string read as a length-one character vector. |
| |
| \code{write.socket} returns the number of bytes written. |
| |
| } |
| \author{Thomas Lumley} |
| |
| \seealso{ |
| \code{\link{close.socket}}, \code{\link{make.socket}} |
| } |
| |
| \examples{ |
| 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) |
| } |
| \dontrun{ |
| finger("root") ## only works if your site provides a finger daemon} |
| } |
| \keyword{misc} |