在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我将在mac os x的开发机器上安装go语言的开发环境。 go语言运行包下载地址:http://code.google.com/p/go/downloads/list 这里我选择安装 go1.0.3.darwin-amd64.pkg 在mac上点击安装,运行包自动安装到/usr/local/go中,这样在命令终端就可以运行go命令了 这里,我把go编辑器安装到我的xcode应用程序中,由于我的xcode装的是4.x以上 在/usr/local/go/misc中,可以看到有很多编辑器版本,这里找到xcode目录,里面进入4,有个go4xcode.sh 在终端中输入: sudo sh ./go4xcode.sh 也许有的,你会报以下这样的错误: xcrun: Error: could not stat active Xcode path '/Volumes/Xcode/Xcode44-DP7.app/Contents/Developer'. (No such file or directory) 可以查看这个解决方法:http://stackoverflow.com/questions/11456918/change-xcrun-developer-path 通过xcode-select命令来解决。 默认mac上安装go运行包,不会添加GOROOT的环境变量,你必须加上一个GOROOT为/usr/local/go的目录,这样再执行go4xcode.sh的时候就不会出现错误。 现在引用一个socket通信样例: server package main import ( "net" "fmt" "io" ) const RECV_BUF_LEN = 1024 func main() { listener, err := net.Listen("tcp", "0.0.0.0:6666")//侦听在6666端口 if err != nil { panic("error listening:"+err.Error()) } fmt.Println("Starting the server") for { conn, err := listener.Accept() //接受连接 if err != nil { panic("Error accept:"+err.Error()) } fmt.Println("Accepted the Connection :", conn.RemoteAddr()) go EchoServer(conn) } } func EchoServer(conn net.Conn) { buf := make([]byte, RECV_BUF_LEN) defer conn.Close() for { n, err := conn.Read(buf); switch err { case nil: conn.Write( buf[0:n] ) case io.EOF: fmt.Printf("Warning: End of data: %s \n", err); return default: fmt.Printf("Error: Reading data : %s \n", err); return } } }
client package main import ( "fmt" "time" "net" ) const RECV_BUF_LEN = 1024 func main() { conn,err := net.Dial("tcp", "127.0.0.1:6666") if err != nil { panic(err.Error()) } defer conn.Close() buf := make([]byte, RECV_BUF_LEN) for i := 0; i < 5; i++ { //准备要发送的字符串 msg := fmt.Sprintf("Hello World, %03d", i) n, err := conn.Write([]byte(msg)) if err != nil { println("Write Buffer Error:", err.Error()) break } fmt.Println(msg) //从服务器端收字符串 n, err = conn.Read(buf) if err !=nil { println("Read Buffer Error:", err.Error()) break } fmt.Println(string(buf[0:n])) //等一秒钟 time.Sleep(time.Second) } }
先执行server: go run server.go 再执行client: go run client.go 回过来看server端: 当client信息发送结束后,会在server段显示 EOF结束的字符。
另外,执行go build xxx.go在当前目录下会产生一个unit可执行文件,执行./xxx 即可执行文件。 |
请发表评论