未分类

go实现socket通信

首先安装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
        }
    }
}

 

One Comment

Leave a Reply

邮箱地址不会被公开。 必填项已用*标注