很不错的教程,讲的很详细。《Network programming with Go》http://jan.newmarch.name/golang/,照着教程写了一个小程序。
//server.go
package main
import(
"fmt"
"net"
"os"
"time"
)
func handleClient(conn *net.UDPConn){
var buf [512]byte
n, addr, err := conn.ReadFromUDP(buf[0:])
if err != nil{
return
}
fmt.Println(string(buf[0:]))
daytime := time.Now().String()
fmt.Println(n,addr)
conn.WriteToUDP([]byte(daytime),addr)
}
func checkError(err error){
if err != nil{
fmt.Fprintf(os.Stderr,"Fatal error:%s",err.Error())
os.Exit(1)
}
}
func main(){
service := ":1200"
udpAddr, err := net.ResolveUDPAddr("up4",service)
checkError(err)
conn,err := net.ListenUDP("udp",udpAddr)
checkError(err)
for{
handleClient(conn)
}
}
//client.go
package main
import(
"fmt"
"net"
"os"
)
func checkError(err error){
if err != nil{
fmt.Fprintf(os.Stderr,"Fatal error:%s",err.Error())
os.Exit(1)
}
}
func main(){
if len(os.Args) != 2{
fmt.Fprintf(os.Stderr, "Usage:%s host:port", os.Args[0])
os.Exit(1)
}
service := os.Args[1]
udpAddr, err := net.ResolveUDPAddr("up4",service)
checkError(err)
conn,err := net.DialUDP("udp",nil,udpAddr)
checkError(err)
_,err = conn.Write([]byte("hello"))
checkError(err)
var buf [512]byte
n,err := conn.Read(buf[0:])
checkError(err)
fmt.Println(string(buf[0:n]))
os.Exit(0)
}
,以后再扩展功能,先睡觉。
上一篇: javascript提示是否删除
下一篇: 十一假期荒废了,只学了个thinkphp
[...] 程序是根据这个程序修改的《Network programming with Go》,下面我想看完电子书开始用go写web程序,路漫漫其修远兮 吾将上下而求索。 [...]
原来你也研究golang,交换下链接互粉一下哈,没事也来我的博客看看
原来你也研究golang,交换下链接互粉一下哈,没事也来我的博客看看
好啊~