Skip to content

Instantly share code, notes, and snippets.

@TimothyYe
Last active August 29, 2015 14:20
Show Gist options
  • Save TimothyYe/e6fa0b14089487a13cda to your computer and use it in GitHub Desktop.
Save TimothyYe/e6fa0b14089487a13cda to your computer and use it in GitHub Desktop.
A fake tcp service for joking...
package main
import (
"flag"
"fmt"
"log"
"net"
"os"
)
var (
optPort = flag.String("p", "12345", "config file")
optLogPath = flag.String("l", "/dev/null", "log path with log name")
optHelp = flag.Bool("h", false, "help parameter")
panicCount = 0
logfile *os.File
)
func handleConn(tcpConn *net.TCPConn) {
if tcpConn == nil {
return
}
tcpConn.Write([]byte("哥们儿,你TM是在逗我么?"))
tcpConn.Close()
}
//Error handling
func handleError(err error) {
if err == nil {
return
}
log.Printf("error:%s\n", err.Error())
}
//Print usage
func printUsage() {
fmt.Println("Fake service v1.0")
fmt.Println("Usage: ./echo -p 12345 -l ./output.log")
fmt.Println("-p: Port to listen")
fmt.Println("-l: Log file path")
fmt.Println("-h: Show help information")
}
func initLog() {
logfile, err := os.OpenFile(*optLogPath, os.O_RDWR|os.O_CREATE, 0666)
if err != nil {
fmt.Printf("%s\r\n", err.Error())
os.Exit(-1)
}
log.SetOutput(logfile)
}
func main() {
if len(os.Args) < 2 {
printUsage()
return
}
flag.Parse()
if *optHelp {
printUsage()
return
}
initLog()
defer logfile.Close()
tcpAddr, err := net.ResolveTCPAddr("tcp4", "0.0.0.0:"+*optPort)
handleError(err)
log.Println("Running... Port listening: " + *optPort)
tcpListener, err := net.ListenTCP("tcp4", tcpAddr)
handleError(err)
defer tcpListener.Close()
for {
tcpConn, err := tcpListener.AcceptTCP()
log.Printf("The client:%s has connected!\n", tcpConn.RemoteAddr().String())
handleError(err)
defer tcpConn.Close()
go handleConn(tcpConn)
}
}
@raymondmars
Copy link

Coooool !

@raymondmars
Copy link

Please modify
tcpAddr, err := net.ResolveTCPAddr("tcp4", "localhost:"+port)
to
tcpAddr, err := net.ResolveTCPAddr("tcp4", "0.0.0.0:"+port)

@TimothyYe
Copy link
Author

@robotJiang Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment