All the "server" example in scala use actors, reactors etc...
Can someone show me how to write a dead simple echo server and client, just like the following python example of Server and 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
The first step is to import the socket module and then create a socket just like you did while creating a server. Then, to create a connection between the client-server you will need to use the connect() method by specifying (host, port).
Python Socket Server To use python socket connection, we need to import socket module. Then, sequentially we need to perform some task to establish connection between server and client. We can obtain host address by using socket. gethostname() function.
Sockets and the socket API are used to send messages across a network. They provide a form of inter-process communication (IPC).
You can do following within standard library:
// 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()
If you don't mind using extra libraries, you might like Finagle.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With