Я использую пакет svSocket в R для создания сервера сокетов.Я успешно создал сервер, используя startSocketServer (...) .Я могу подключить свое приложение к серверу и отправить данные с сервера в приложение.Но я борюсь с чтением сообщений, отправленных приложением.Я не смог найти ни одного примера в интернете.Я нашел только processSocket (...) пример в документации по vsSocket (см. Ниже), которая описывает функцию, которая обрабатывает команду, поступающую из сокета.Но я хочу только читать сообщения сокета, поступающие на сервер в повторяющемся блоке, и выводить их на экран для тестирования.
## Not run:
# ## A simple REPL (R eval/process loop) using basic features of processSocket()
# repl <- function ()
# {
# pars <- parSocket("repl", "", bare = FALSE) # Parameterize the loop
# cat("Enter R code, hit <CTRL-C> or <ESC> to exit\n> ") # First prompt
# repeat {
# entry <- readLines(n = 1) # Read a line of entry
# if (entry == "") entry <- "<<<esc>>>" # Exit from multiline mode
# cat(processSocket(entry, "repl", "")) # Process the entry
# }
# }
# repl()
# ## End(Not run)
Спасибо за ваш ввод.
РЕДАКТИРОВАТЬ:
Вот более конкретный пример создания сокет-сервера и отправки сообщения:
require(svSocket)
#start server
svSocket::startSocketServer(
port = 9999,
server.name = "test_server",
procfun = processSocket,
secure = FALSE,
local = FALSE
)
#test calls
svSocket::getSocketClients(port = 9999) #ip and port of client connected
svSocket::getSocketClientsNames(port = 9999) #name of client connected
svSocket::getSocketServerName(port = 9999) #name of socket server given during creation
svSocket::getSocketServers() #server name and port
#send message to client
svSocket::sendSocketClients(
text = "send this message to the client",
sockets = svSocket::getSocketClientsNames(port = 9999),
serverport = 9999
)
... и ответ кода выше:
> require(svSocket)
>
> #start server
> svSocket::startSocketServer(
+ port = 9999,
+ server.name = "test_server",
+ procfun = processSocket,
+ secure = FALSE,
+ local = FALSE
+ )
[1] TRUE
>
> #test calls
> svSocket::getSocketClients(port = 9999) #ip and port of client connected
sock0000000005C576B0
"192.168.2.1:55427"
> svSocket::getSocketClientsNames(port = 9999) #name of client connected
[1] "sock0000000005C576B0"
> svSocket::getSocketServerName(port = 9999) #name of socket server given during creation
[1] "test_server"
> svSocket::getSocketServers() #server name and port
test_server
9999
>
> #send message to client
> svSocket::sendSocketClients(
+ text = "send this message to the client",
+ sockets = svSocket::getSocketClientsNames(port = 9999),
+ serverport = 9999
+ )
>
Что выможно увидеть:
- успешное создание сервера сокетов
- успешное подключение внешнего клиента sock0000000005C576B0 (192.168.2.1:55427) к серверу
- успешная отправка сообщенияклиенту (здесь вывод explizit не предоставляется в консоли, но клиент реагирует так, как ожидается
- , что я до сих пор не могу реализовать, это получить клиентские сообщения, отправленные на сервер. Может ли кто-нибудь предоставить мнепример на что?