Go语言之进阶篇TCP相互通信

Posted nulige

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言之进阶篇TCP相互通信相关的知识,希望对你有一定的参考价值。

1、TCP相互通信

服务端示例:

tcp_server.go

package main

import (
	"fmt"
	"net"
)

func main() {
	//监听
	listener, err := net.Listen("tcp", "127.0.0.1:8000")
	if err != nil {
		fmt.Println("err = ", err)
		return
	}

	defer listener.Close()

	//阻塞等待用户链接
	conn, err := listener.Accept()
	if err != nil {
		fmt.Println("err = ", err)
		return
	}

	//接收用户的请求
	buf := make([]byte, 1024) //1024大小的缓冲区
	n, err1 := conn.Read(buf)
	if err1 != nil {
		fmt.Println("err1 = ", err1)
		return
	}

	fmt.Println("buf = ", string(buf[:n]))

	defer conn.Close() //关闭当前用户链接
}

客户端示例:

tcp_client.go

package main

import (
	"fmt"
	"net"
)

func main() {
	//主动连接服务器
	conn, err := net.Dial("tcp", "127.0.0.1:8000")
	if err != nil {
		fmt.Println("err = ", err)
		return
	}

	defer conn.Close()

	//发送数据
	conn.Write([]byte("are you ok?"))

}

先启动服务端:go run tcp_server.go

D:GoFilessrchello_01>go run tcp_server.go
buf =  are u ok?

再启动客户端:go run tcp_client.go

 

以上是关于Go语言之进阶篇TCP相互通信的主要内容,如果未能解决你的问题,请参考以下文章

Go语言之进阶篇服务器如何知道用户需要什么资源

Go语言之进阶篇响应报文测试方法

Go语言之进阶篇连接mysql

Go语言之进阶篇爬百度贴吧并发版

go语音之进阶篇正则表达式

go语音之进阶篇方法面向过程和对象函数的区别