golang tcp socket编程和http差不多的感觉,也是请求应答的方式,TCP请求需要(ip地址,协议,端口)这三项,跟http请求差不多,我们现在来模拟一个请求和应答来,请求的一方我们就叫做client.go
package main
import (
"fmt"
"io/ioutil"
"net"
"os"
)
func main() {
tcpAddr, err := net.ResolveTCPAddr("tcp4", "127.0.0.1:7777") //获取一个TCP地址信息,TCPAddr
checkError(err)
conn, err := net.DialTCP("tcp", nil, tcpAddr) //创建一个TCP连接:TCPConn
checkError(err)
_, err = conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n")) //发送HTTP请求头
checkError(err)
result, err := ioutil.ReadAll(conn) //获得返回数据
checkError(err)
fmt.Println(string(result))
os.Exit(1)
}
func checkError(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
os.Exit(1)
}
}
import (
"fmt"
"net"
"os"
"time"
)
func main() {
tcpAddr, err := net.ResolveTCPAddr("tcp4", ":7777") //获取一个tcpAddr
checkError(err)
listener, err := net.ListenTCP("tcp", tcpAddr) //监听一个端口
checkError(err)
for {
conn, err := listener.Accept()
if err != nil {
continue
}
daytime := time.Now().String()
conn.Write([]byte(daytime))
conn.Close()
}
}
func checkError(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
os.Exit(1)
}
}
原文:http://my.oschina.net/tongjh/blog/340170