daily pastebin goal
56%
SHARE
TWEET

runserver.go

a guest Jun 13th, 2018 69 in 240 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package main
  2.  
  3. import (
  4. _       "io"
  5.         "net"
  6.         //"log"
  7.         "fmt"
  8.         _ "bufio"
  9.         "encoding/gob"
  10.         _ "strings" // only needed below for sample processing
  11. )
  12.  
  13.  
  14. func main() {
  15.         // Listen on a port
  16.         listen, error := net.Listen("tcp", ":8272")
  17.  
  18.         // Handles eventual errors
  19.         if error != nil {
  20.                 fmt.Println(error)
  21.                 return
  22.         }
  23.  
  24.         fmt.Println("Listening in port 8272.")
  25.  
  26.         for {  
  27.                 // Accepts connections
  28.                 con, error := listen.Accept()
  29.  
  30.                 // Handles eventual errors
  31.                 if error != nil {
  32.                         fmt.Println(error)
  33.                         continue
  34.                 }
  35.  
  36.                 fmt.Println("Connection accepted.")
  37.  
  38.                 // Handles the connection
  39.  
  40.  
  41.                 go handleConnection(con)
  42.         }
  43. }
  44.  
  45. func handleConnection(con net.Conn) {
  46.         fmt.Println("Handling connection.")
  47.  
  48.         defer func() {
  49.                 // Closes the connection
  50.                 con.Close()
  51.                 fmt.Println("Connection closed.")
  52.         }()
  53.  
  54.  
  55.         /*
  56.         go func(c net.Conn) {
  57.                 // Echo all incoming data.
  58.                 for {
  59.                 io.Copy(c, c)
  60.                 }
  61.                 // Shut down the connection.
  62.                 c.Close()
  63.         }(con)
  64.         */
  65.  
  66.         var message string
  67.  
  68.         // Decodes the received message
  69.         decoder := gob.NewDecoder(con)
  70.         encoder := gob.NewEncoder(con)
  71.         for {  
  72.                 error := decoder.Decode(&message)
  73.  
  74.                 // Checks for errors
  75.                 if error != nil {
  76.                         fmt.Println(error)
  77.                         // Exit the loop
  78.                         return
  79.                 } else {
  80.                         fmt.Println("Received", message)
  81.                         // Sending back
  82.                         if error = encoder.Encode("oh lala success"); error != nil {
  83.                 //              fmt.Println(error)
  84.                                 return
  85.                         } else {
  86.                                 fmt.Println("Echo'd successfuly ! Waiting for next message...")
  87.                         }
  88.                 }
  89.         }
  90. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top