go实现socket通信
2019年4月20日
首先安装go语言,
sudo apt install golang
(好像是这个,记不清了),用vscode编写go语言的时候记得要翻墙,不翻墙的话有些源下不下来。编译的时候不要用vscode那个编译,太麻烦,直接命令行
go build file_name.go
,这时候会生成一个可运行的文件,直接
./file_name
即可运行。
下面直接上源码。
package main
import{
"fmt"
"net"
"os"
}
func main(){
service := ":5000" //默认监听的是本地的5000端口
udpAddr,err := net.ResolveUDPAddr("udp4",service)//使用udp通信
checkErr(err)
conn,err := net.ListenUDP("udp",udpAddr)//开启监听并生成一个通道对象
checkErr(err)
for{
sendMsg(conn)
}
}
func checkErr(err error){
if err != nil {
fmt.Fprintln(os.Stderr,"Fatal error: %s",err.Error())
os.Exit(1)
}
}
func sendMsg(conn *net.UDPConn){
defer conn.Close() //这条用来垃圾回收
var buf [512]byte
for{
n,err := conn.Read(buf[0:])
if err != nil{
return
}
service_2 := net.UDPAddr{//service_2是对方接收消息的地址,这个是一个结构体,要用结构体赋值
IP: net.ParseIP("127.0.0.1"),
Port: 6699
}
_,err2 := conn.WriteToUDP(buf[0:n],&service_2)
if err2 != nil {
return
}
}
}
Previous
多线程condition_variable
Newer
One Comment
北海
这第一段的文风太逗了