很不错的教程,讲的很详细。《Network programming with Go》http://jan.newmarch.name/golang/,照着教程写了一个小程序。
Read more...
//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)
}
,以后再扩展功能,先睡觉。