Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scala equivalent of python echo server/client example?

Tags:

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 
like image 763
Andriy Drozdyuk Avatar asked Jun 20 '11 17:06

Andriy Drozdyuk


People also ask

How would you establish a connection between client and server in python?

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).

How python is used to develop a client server application?

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.

Why do we use sockets in python?

Sockets and the socket API are used to send messages across a network. They provide a form of inter-process communication (IPC).


1 Answers

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.

like image 149
Przemek Pokrywka Avatar answered Oct 02 '22 20:10

Przemek Pokrywka