Golang Socket编程小实例
1.服务端监听并处理接收信息
package main
import (
"fmt"
"io"
"net"
)
func process(conn net.Conn){
defer conn.Close()
for {
fmt.Println("服务器的等 待客户端写入……")
readByte :=make([]byte,2048)
// 注意这里是将数据读取到readByte byte数组中,读取个数为n,并不是上面的2048
n,err :=conn.Read(readByte)
if err==io.EOF{
fmt.Println("客户端关闭,服务器关闭")
return
}
if err!=nil{
fmt.Println("服务器的Reader err=",err)
return
}
// 最终获取到的数据, 取数时要注意,是0~n 个不是2048,因为最终读取到的是n
readStr :=string(readByte[:n])
fmt.Println("服务器端读取到数据",readStr)
}
}
func main(){
fmt.Println("服务器端开始监听^……")
// 服务端监听 8090
listen,err :=net.Listen("tcp","127.0.0.1:8090")
if err!=nil{
fmt.Println("监听127.0.0.1:8090出错")
return
}
defer listen.Close()
for{
fmt.Println("等待客户端·连接……")
conn,err :=listen.Accept()
if err!=nil{
fmt.Println("接收出错",err)
continue
}
fmt.Println("客户端连接成功……")
fmt.Println(conn)
go process(conn)
}
}
2.客户端连接服务端并发送信息
package main
import (
"fmt"
"net"
)
func main() {
// 建立客户端连接
conn,err :=net.Dial("tcp","127.0.0.1:8090")
if err !=nil{
fmt.Println("建立连接120.0.0.1:8090出错",err)
return // 注意 如果连接失败,这里要失败
}
fmt.Println("连接120.0.0.1:8090成功!",err)
defer conn.Close()
// 发送信息
whriteStr :="hello word,你好!"
// 通过conn连接发送信息
n,err :=conn.Write([]byte(whriteStr))
if err!=nil{
fmt.Println("conn whrite err=",err)
}
fmt.Println("客户端发送了",n,"个字节并退出")
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2014-07-16 MVC4 中的Model显示设置(含显示Shared/DisplayTemplates和编辑Shared/EditorTemplates)