golang tcp 使用的函数:
net.ResolveTCPAddr(tcp, serveraddr string)
net.ListenTCP(tcp,server string)
conn.Accept()
#golang tcp server
//follow by <go web program>
package main
import (
"fmt"
"os"
"net"
)
func checkError(err error){
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal Error : %s ", err.Error())
os.Exit(1)
}
}
func main() {
//server addr define
server := ":7777"
//make addr
tcpAddr, err := net.ResolveTCPAddr("tcp4", server)
checkError(err)
//bind address & listen
listener, err := net.ListenTCP("tcp", tcpAddr)
checkError(err)
//worker
for {
conn, err := listener.Accept()
if err != nil {
continue
}
daytime := time.Now().String()
fmt.Println(conn.LocalAddr())
fmt.Println(conn.RemoteAddr())
conn.Write([]byte(daytime))
conn.Close()
}
}
#golang tcp client
package main
import (
"fmt"
"io/ioutil"
"net"
"os"
)
func checkError(err error){
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal Error: %s" , err.Error())
os.Exit(1)
}
}
func main() {
//get host:port from args
if len(os.Args) != 2 {
fmt.Fprintf(os.Stderr, "usage: % host:port", os.Args[0])
os.Exit(1)
}
service := os.Args[1]
tcpAddr,err := net.ResolveTCPAddr("tcp4", service)
checkError(err)
conn,err:= net.DialTCP("tcp", nil, tcpAddr)
checkError(err)
_,err = conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n"))
checkError(err)
result,err := ioutil.ReadAll(conn)
checkError(err)
fmt.Println(string(result))
os.Exit(0)
}