Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "bufio"
- "fmt"
- "net"
- )
- func handleConnection(c net.Conn) {
- localChan := make(chan string)
- // starts a goroutine to handle incoming message from client
- go func() {
- for {
- netData, err := bufio.NewReader(c).ReadString('\n')
- if err != nil {
- fmt.Println(err)
- return
- }
- if netData[:8] == "message:" {
- res := "back at you: " + netData[8:]
- localChan <- res
- } else if netData[:4] == "brc:" {
- //res := "broadcast: " + netData[4:]
- // what to do?
- }
- }
- }()
- // do something when received channel
- for {
- select {
- case loc := <-localChan:
- c.Write([]byte(loc))
- }
- }
- }
- func main() {
- l, err := net.Listen("tcp", "127.0.0.1:305")
- if err != nil {
- fmt.Println(err)
- return
- }
- defer l.Close()
- for {
- con, err := l.Accept()
- if err != nil {
- fmt.Println(err)
- return
- }
- // create separate goroutine for each new client
- go handleConnection(con)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement