Skip to content

Instantly share code, notes, and snippets.

@DeepSky8
Created January 4, 2015 16:36
Show Gist options
  • Select an option

  • Save DeepSky8/6b255fd71d8190dea24a to your computer and use it in GitHub Desktop.

Select an option

Save DeepSky8/6b255fd71d8190dea24a to your computer and use it in GitHub Desktop.
The assignment is to create a server that will recognize different requests being submitted, and serve different results based on the request. This server currently requires a knowledge of the result location - the root directory only welcomes the browser with a welcome text. There are no hyperlinks for further information.
object Listen {
import java.net._
import java.io._
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
def Listen(): Unit = {
val doorbell = new Thread(new Runnable {
val request = new ServerSocket(80)
override def run(): Unit = {
while (true) {
val doorway = request.accept
Spawn(doorway)
}
}
})
doorbell.start()
}
def Spawn(doorway: Socket): Unit = {
val answer = new Thread(new Runnable {
override def run(): Unit = {
if (doorway != null) {
val requestReader = new BufferedReader(new InputStreamReader(doorway.getInputStream))
val request = requestReader.readLine
// requestReader.readLine
// requestReader.readLine
// requestReader.readLine
// requestReader.readLine
// requestReader.readLine
// requestReader.readLine
// requestReader.readLine
// requestReader.readLine
// requestReader.readLine
// requestReader.readLine
println(request)
val address = request.split(" ")(1).tail
println(address)
address match {
case "abc" => Letters
case "123" => Numbers
case _ => Welcome
}
doorway.close
}
def Letters: Unit = {
val textWriter = doorway.getOutputStream()
textWriter.write("You have requested letters.".getBytes)
}
def Numbers: Unit = {
val textWriter = doorway.getOutputStream()
textWriter.write("You have requested numbers.".getBytes)
}
def Welcome: Unit = {
val textWriter = doorway.getOutputStream()
textWriter.write("Welcome to my server!".getBytes)
}
// def Spawn(doorway: Socket): Unit = {
// val answer = new Thread(new Runnable {
// override def run(): Unit = {
// "GET /abc.html HTTP/1.1".
// val talkToMe = doorway.getOutputStream()
// talkToMe.write("What is your name?".getBytes)
// val user = new BufferedReader(new InputStreamReader(doorway.getInputStream()))
// val name = user.readLine()
// talkToMe.write(("Hello, " + name).getBytes)
// println(user.readLine)
// println(user.readLine)
// println(user.readLine)
// println(user.readLine)
// println(user.readLine)
// println(user.readLine)
// println(user.readLine)
// println(user.readLine)
// println(user.readLine)
// doorway.close
// }
}
})
answer.start
}
def main(args: Array[String]): Unit = {
Listen
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment