go语言—socket网络编程
(适合有基础计算机网络知识的)
服务端总体思路:
- 创建服务器地址;
- 创建监听器;
- 通过监听器监听客户端传递过来的数据;(这一步会阻塞)
- 转换数据;
- 关闭连接;
// 这里是服务端代码
package main
import (
"fmt"
"net"
)
func main() {
// 1. 创建服务器地址;(暂不处理错误信息)
addr, _ := net.ResolveTCPAddr("tcp4", "localhost:8899")
// 2. 创建监听器;
lis, _ := net.ListenTCP("tcp4", addr)
fmt.Println("服务端已经启动,正在监听8899端口...")
// 3. 通过监听器监听客户端传递过来的数据;(阻塞)
conn, _ := lis.Accept()
// 4. 转换数据;
b := make([]byte, 1024)
n, _ := conn.Read(b)
fmt.Println("获取到的数据是: ", string(b[:n]))
fmt.Println("获取到的数据长度是: ", n)
// 5. 关闭连接;
conn.Close()
}
客户端总体思路:
- 创建服务器端地址;
- 创建连接;
- 发送数据;
- 关闭连接;
// 这里是客户端代码
package main
import (
"fmt"
"net"
)
func main() {
// 1. 创建服务器端的地址;
addr, _ := net.ResolveTCPAddr("tcp4", "localhost:8899")
//2. 创建连接;
conn, _ := net.DialTCP("tcp", nil, addr)
//3. 发送数据;
n, err := conn.Write([]byte("这里是客户端发送过来的数据!"))
if err != nil {
fmt.Println("发送失败 >>>")
} else {
fmt.Println("发送成功 >>>")
}
fmt.Println("发送的数据长度 n: ", n)
//4. 关闭连接;
conn.Close()
}
先将服务端代码运行起来,服务端会阻塞,直到有数据发送过来;再将客户端代码运行起来,此时就可以看到服务端控制台打印出了客户端发送过去的数据内容;