Lalas, próbuję również zrobić to, co próbujesz zrobić jako kompletną, nic nie wiedzącą. tdsmith
na czacie freenode #R
udzieliłem mi odpowiedniej porady: użyj telnet
.
więc okno terminala 1:
R
należy teraz wisi (czeka na kogoś, aby porozmawiać z nim).
teraz otworzyć kolejne okno terminala i wpisz:
telnet localhost 12345
Wróć do okna 1. Zobaczysz R
już nie wisi. Dobry! Więc teraz wpisać (w tym samym oknie 1):
readChar(s,3)
Powrót do okna 2, okno telnet
. Typ:
Lalas wins at life.
Co zobaczysz w oknie 1 jest to, że tekst wprowadzony gdzieś poza granice okna 1, weszła okno 1.
Lal
Niestety readChar
spodziewałem krótszą wiadomość, więc nie dostałeś wszystkiego. Ponownie spróbuj readChar(s,6)
, a usłyszysz
as win
.Zauważysz, że readChar(s,1)
słyszy litery, które wydają się "wieszać" (gdzie?). Dziwne. Ale oczywiście jest to irytujący sposób na słuchanie, konieczność wcześniejszego określenia długości wiadomości!
Wypróbuj readLines(s)
, która nie wymaga specyfikacji; czeka na znak EOL.
Powrót do okna 2, okno telnet:
Money
that's what I want
that's what I waaaaaaaant
Jedynym sposobem mogłem zorientować się dostać readLines(s)
usłyszeć mnie było przez Ctrl] „ing w telnet
aby uzyskać podpowiedź, a następnie close
ing. R
nie usłyszy te wszystkie nowe linie (nawet jeśli wpiszesz \r\n
etc), ale gdy połączenie zostanie zamknięte dostaniesz każdy wiersz w oknie 1.
Teraz to jest za pomocą więcej pomocy od ernst
w ten sam pokój freenode. Zamiast używać telnet
tym razem używane nc localhost 12345
. Netcat można słuchać i mówić, i zachowuje się bardziej expectedly że mogę wysłać EOL z CtrlD.
Zamknij i ponownie otwórz okno 1 gniazda gniazdka s = socketConnection(port=12345,server=T)
. Zamknij okno telnet
w oknie 2 i wpisz zamiast niego: nc localhost 12345
. Teraz wpisz wiadomości po obu stronach i mogą one być odbierane przez siebie nawzajem.
okno 1:
cat(rpois(1e2, 20), file=s)
readLines(s)
okno 2 (powinien już słyszałem kilka liczb losowych):
Lalas
wins
at
life.
{{control D}}
okno 1 powinien mieć teraz otrzymaliśmy wiadomość.