Created
January 4, 2015 16:36
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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