Skip to content

Instantly share code, notes, and snippets.

@furu
Created August 27, 2014 08:21
Show Gist options
  • Save furu/0bfb4bc508be53058139 to your computer and use it in GitHub Desktop.
Save furu/0bfb4bc508be53058139 to your computer and use it in GitHub Desktop.
package main
import (
"bufio"
"log"
"net"
"strings"
)
const RemoteAddress = "localhost"
const RemotePort = "4545"
const Message = "Hi!\n"
func main() {
conn, err := net.Dial("tcp", net.JoinHostPort(RemoteAddress, RemotePort))
if err != nil {
log.Fatalln(err)
}
defer conn.Close()
log.Printf("Connected to %v\n", conn.RemoteAddr())
_, err = conn.Write([]byte(Message))
if err != nil {
log.Fatalln(err)
}
log.Printf("Sent a message '%s' to %v", strings.TrimRight(Message, "\n"), conn.RemoteAddr())
response, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
log.Fatalln(err)
}
log.Printf("Recieved a response '%s' from %v\n",
strings.TrimRight(response, "\n"), conn.RemoteAddr())
}
package main
import (
"bufio"
"log"
"net"
"strings"
)
const Address = "localhost"
const Port = "4545"
func handleTCPClient(conn net.Conn) {
defer conn.Close()
message, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
log.Fatalln(err)
}
log.Printf("Recieved a message '%s' from %v\n",
strings.TrimRight(message, "\n"), conn.RemoteAddr())
response := message + " " + conn.RemoteAddr().String()
_, err = conn.Write([]byte(response))
if err != nil {
log.Fatalln(err)
}
log.Printf("Echo a message '%s' to %v", strings.TrimRight(message, "\n"), conn.RemoteAddr())
}
func main() {
listener, err := net.Listen("tcp", net.JoinHostPort(Address, Port))
if err != nil {
log.Fatalln(err)
}
defer listener.Close()
log.Printf("Listening on %v\n", listener.Addr())
for {
conn, err := listener.Accept()
if err != nil {
log.Println(err)
continue
}
log.Printf("Handling Client %v\n", conn.RemoteAddr())
go handleTCPClient(conn)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment