Go语言从入门到精通-04| Socket客户端与服务端
大家都知道Web服务是基于HTTP协议的,而HTTP协议又是TCP协议上的应用层协议。因此我们在开发一个Web服务之前,我们先介绍一下如何使用Go语言开发一个基于TCP的客户端与服务端程序(关于TCP协议的原理可以参考本号之前的文章《从socket到TCP协议,透彻理解网络编程》)。
程序比较简单,服务端用于等待客户端的连接,连接建立成功后,如果接到客户端的数据,则原封不动的返回相同的数据。客户端建立与服务端的连接,连接建立成功后向服务端发送字符串数据,并等待接收服务端的返回。
服务端
前面已经介绍,服务端用于等待客户端的连接,连接建立成功后,如果接到客户端的数据,则原封不动的返回相同的数据。如下是服务端的代码,监听的端口为8080。
package main
import (
"fmt"
"net" //网络通信的库
"os"
)
func main() {
/* 构建服务端的地址,端口 */
service := ":8080"
tcpAddr, err := net.ResolveTCPAddr("tcp4", service)
checkError(err)
/* 建立对端口的监听 */
listener, err := net.ListenTCP("tcp", tcpAddr)
checkError(err)
for {
fmt.Println("begin accept")
/* 等待客户端的连接 */
conn, err := listener.Accept()
if err != nil {
continue
}
buf := make([]byte,1024)
/* 读取客户端发送的数据,并打印 */
result, err := conn.Read(buf)
fmt.Println(result, string(buf))
/* 将数据原封返回给客户端 */
conn.Write(buf)
conn.Close()
}
}
func checkError(err error) {
if err != nil {
fmt.Fprintf(os.Stderr,
"Fatal error: %s", err.Error())
os.Exit(1)
}
}
相关文章