客户端发送消息 并接收服务端消息
package main
import (
"fmt"
"net"
)
func main() {
conn, err := net.Dial(`tcp`, ":8848")
if err != nil {
fmt.Println(`net dial err:`, err)
return
}
fmt.Println(`cline 与server 建立连接成功`)
sendData := []byte(`hellword`)
cnt, err := conn.Write(sendData)
if err != nil {
fmt.Println(`conn.write err:`, err)
return
}
fmt.Println(`Client ==> Server cnt:`, cnt, "data:", string(sendData))
buf := make([]byte, 1024)
cnt, err = conn.Read(buf)
if err != nil {
fmt.Println(`conn read err :`, err)
return
}
fmt.Println("Client <=== Server ,cnt:", cnt, "data", string(buf[0:cnt]))
}
单个服务监听
package main
import (
"fmt"
"net"
"strings"
)
func main() {
ip := "127.0.01"
port := 8848
address := fmt.Sprintf(`%s:%d`, ip, port)
listener, err := net.Listen(`tcp`, address)
if err != nil {
fmt.Println(`net.listen err :`, err)
return
}
fmt.Println(`监听中`)
conn, err := listener.Accept()
if err != nil {
fmt.Println(`listener.Accept err:`, err)
return
}
fmt.Println(`建立连接成功`)
buf := make([]byte, 1024)
cnr, err := conn.Read(buf)
if err != nil {
fmt.Println(`cnr err:`, err)
return
}
fmt.Println(`Client ==> Server,长度`, cnr, "数据:", string(buf[0:cnr]))
upperData := strings.ToUpper(string(buf))
cnr, err = conn.Write([]byte(upperData))
fmt.Println(`Clinet <====Server,长度`, cnr, "数据:", upperData)
conn.Close()
}
多个socket 服务端监听
package main
import (
"fmt"
"net"
"strings"
)
func main() {
ip := "127.0.01"
port := 8848
address := fmt.Sprintf(`%s:%d`, ip, port)
listener, err := net.Listen(`tcp`, address)
if err != nil {
fmt.Println(`net.listen err :`, err)
return
}
for {
fmt.Println(`监听中`)
conn, err := listener.Accept()
if err != nil {
fmt.Println(`listener.Accept err:`, err)
return
}
fmt.Println(`建立连接成功`)
go handleFunc(conn)
}
}
func handleFunc(conn net.Conn) {
buf := make([]byte, 1024)
cnr, err := conn.Read(buf)
if err != nil {
fmt.Println(`cnr err:`, err)
return
}
fmt.Println(`Client ==> Server,长度`, cnr, "数据:", string(buf[0:cnr]))
upperData := strings.ToUpper(string(buf))
cnr, err = conn.Write([]byte(upperData))
fmt.Println(`Clinet <====Server,长度`, cnr, "数据:", upperData)
_ = conn.Close()
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)