way - printing strings with variables python
¿Scala equivalente de Python echo server/client ejemplo? (5)
Todos los ejemplos de "servidores" en scala utilizan actores, reactores, etc.
Alguien me puede mostrar cómo escribir un servidor y cliente de eco simple y muerto, como en el siguiente ejemplo de Python de Server y Client :
# A simple echo server
import socket
host = ''''
port = 50000
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
data = client.recv(size)
if data:
client.send(data)
client.close()
# A simple echo client
import socket
host = ''localhost''
port = 50000
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
s.send(''Hello, world'')
data = s.recv(size)
s.close()
print ''Received:'', data
Acabo de escribir una entrada de blog sobre el uso de Akka IO y Iteratees para crear un servidor de socket basado en comandos simples.
Tal vez pueda ser de interés.
http://leon.radley.se/2012/08/akka-command-based-socket-server/
Josh Suereth recientemente publicó un ejemplo de un servidor de eco NIO que usa Iteratees de Scalaz . Requiere la librería scalaz
Puedes hacer lo siguiente dentro de la biblioteca estándar:
// Simple server
import java.net._
import java.io._
import scala.io._
val server = new ServerSocket(9999)
while (true) {
val s = server.accept()
val in = new BufferedSource(s.getInputStream()).getLines()
val out = new PrintStream(s.getOutputStream())
out.println(in.next())
out.flush()
s.close()
}
// Simple client
import java.net._
import java.io._
import scala.io._
val s = new Socket(InetAddress.getByName("localhost"), 9999)
lazy val in = new BufferedSource(s.getInputStream()).getLines()
val out = new PrintStream(s.getOutputStream())
out.println("Hello, world")
out.flush()
println("Received: " + in.next())
s.close()
Si no te importa usar bibliotecas adicionales, es posible que te guste Finagle .
Puedes usar netty java library. Aquí hay un ejemplo de uso en Scala:
https://github.com/mcroydon/scala-echo-server
Generalmente necesitas usar la API de Java Socket. En este ejemplo, se usa la API de Java Socket, pero todo el servidor está envuelto en Actor para procesar a los clientes en un hilo separado y no para bloquear el hilo aceptador (lo mismo que normalmente hará en Java, pero usará los hilos directamente).
Tendrías que usar Java Sockets. Encontré un buen ejemplo de Scala Socket Server / Client en: http://www.scala-lang.org/node/55