很不错的教程,讲的很详细。《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)
}


,以后再扩展功能,先睡觉。

上一篇:
下一篇:

相关文章:

Categories: 博客记录

3 Responses so far.

  1. 0X55AA 说:

    好啊~

  2. weager 说:

    原来你也研究golang,交换下链接互粉一下哈,没事也来我的博客看看

  3. 用golang写的小的基于udp协议的聊天室程序 : 0X55AA'博客 说:

    [...] 程序是根据这个程序修改的《Network programming with Go》,下面我想看完电子书开始用go写web程序,路漫漫其修远兮 吾将上下而求索。 [...]

Leave a Reply