TCPClient
- // TCPClient project main.go
- package main import("fmt""net""os") func main() {
- var buf[512] byte
- if len(os.Args) != 2 {
- fmt.Fprintf(os.Stderr, "Usage: %s host:port ", os.Args[0]) os.Exit(1)
- }
- service: =os.Args[1] tcpAddr,
- err: =net.ResolveTCPAddr("tcp4", service) checkErr(err) conn,
- err: =net.DialTCP("tcp", nil, tcpAddr) defer conn.Close() checkErr(err) rAddr: =conn.RemoteAddr() n,
- err: =conn.Write([] byte("Hello server!")) checkErr(err) n,
- err = conn.Read(buf[0 : ]) checkErr(err) fmt.Println("Reply from server ", rAddr.String(), string(buf[0 : n])) os.Exit(0)
- }
- func checkErr(err error) {
- if err != nil {
- fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error()) os.Exit(1)
- }
- }
TCPServer
- // TCPServer project main.go
- package main import("fmt""net""os") func main() {
- service: =":5000"tcpAddr,
- err: =net.ResolveTCPAddr("tcp4", service) checkErr(err) listener,
- err: =net.ListenTCP("tcp", tcpAddr) checkErr(err) for {
- conn,
- err: =listener.Accept() if err != nil {
- continue
- }
- go handleClient(conn)
- }
- }
- func checkErr(err error) {
- if err != nil {
- fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error()) os.Exit(1)
- }
- }
- func handleClient(conn net.Conn) {
- defer conn.Close() var buf[512] byte
- for {
- n,
- err: =conn.Read(buf[0 : ]) if err != nil {
- return
- }
- rAddr: =conn.RemoteAddr() fmt.Println("Receive from client", rAddr.String(), string(buf[0 : n])) _,
- err2: =conn.Write([] byte("Welcome client!")) if err2 != nil {
- return
- }
- }
- }
UPDClient
- // UDPClient project main.go
- package main import("fmt""net""os") func main() {
- var buf[512] byte
- 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("udp4", service) checkErr(err) conn,
- err: =net.DialUDP("udp", nil, udpAddr) defer conn.Close() checkErr(err) rAddr: =conn.RemoteAddr() n,
- err: =conn.Write([] byte("Hello server!")) checkErr(err) n,
- err = conn.Read(buf[0 : ]) checkErr(err) fmt.Println("Reply from server ", rAddr.String(), string(buf[0 : n])) os.Exit(0)
- }
- func checkErr(err error) {
- if err != nil {
- fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error()) os.Exit(1)
- }
- }
UDPServer
- // UDPServer project main.go
- package main import("fmt""net""os") func main() {
- service: =":5000"udpAddr,
- err: =net.ResolveUDPAddr("udp4", service) checkErr(err) conn,
- err: =net.ListenUDP("udp", udpAddr) checkErr(err) for {
- handleClient(conn)
- }
- }
- func checkErr(err error) {
- if err != nil {
- fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error()) os.Exit(1)
- }
- }
- func handleClient(conn * net.UDPConn) {
- defer conn.Close() var buf[512] byte
- for {
- n,
- rAddr,
- err: =conn.ReadFromUDP(buf[0 : ]) if err != nil {
- return
- }
- fmt.Println("Receive from client", rAddr.String(), string(buf[0 : n])) _,
- err2: =conn.WriteToUDP([] byte("Welcome client!"), rAddr) if err2 != nil {
- return
- }
- }
- }
来源: http://www.bubuko.com/infodetail-1857945.html