以下为客户端代码,
服务端请见吕志钊写的《Go语言-使用去程的Echo服务器》http://my.oschina.net/nalan/blog/75626
一样,废话不说了,直接上代码.里面注释应该很清楚了
/** * Created with IntelliJ IDEA. * User: liaojie * Date: 12-9-5 * Time: 下午2:42 * To change this template use File | Settings | File Templates. */ package main import ( //"__PB__/GAME_PB_" //"code.google.com/p/goprotobuf/proto" "net" "fmt" "bufio" "os" //"flag" "log" "time" ) var running bool; var ( host = "192.168.0.27"; port = "12346"; laddr = host + ":" + port; ) func main() { //flag.Parse(); running = true; log.Printf("Starting... "); conn,err := net.Dial("tcp",laddr) if err != nil { log.Printf("与服务器%s握手失败;\n 错误:%s",host,err); os.Exit(1); } defer conn.Close(); reader := bufio.NewReader(os.Stdin); name,_ := reader.ReadBytes('\n'); conn.Write(name[0:len(name)-1]); go client_receiver(conn); go client_sender(conn); for ;running; { time.Sleep(1*1e9); } } //客户端发送器 func client_sender(conn net.Conn){ reader := bufio.NewReader(os.Stdin); for { fmt.Print("Server>") input,_ :=reader.ReadBytes('\n') if string(input) =="/quit\n"{ conn.Write([]byte("/quit\n")) running = false; break; } conn.Write(input[0:len(input)-1]) } } //客户端接收器 func client_receiver(conn net.Conn){ //无限循环 for running { fmt.Println("===%s",readabc(conn)); fmt.Print("You>"); } } //读书连接 func readabc(conn net.Conn) string{ buf := make([]byte,1024) _,err :=conn.Read(buf); if err != nil { // log.Printf("接收错误:%s",err); // defer conn.Close(); log.Printf("警告!连接已断开: %s \n",err); os.Exit(1); } return string(buf) }