发送udp数据包时如何设置源端口

时间:2019-06-13 14:24:34

标签: go

在客户端上,我想在发送udp数据包时设置UDP源端口。 在服务器上,我想知道接收UDP源端口的位置。

客户

package main

import (
    "net"
)

func main() {

    s, err := net.ResolveUDPAddr("udp4", "127.0.0.1:1234")
    c, err := net.DialUDP("udp4", nil, s)

    if err != nil {
        fmt.Println(err)
        return
    }
}

服务器:

package main

import (
    "net"
    "time"
)

func main() {

    s, err := net.ResolveUDPAddr("udp4", "127.0.0.1:1234")
    if err != nil {
        fmt.Println(err)
        return
    }

    connection, err := net.ListenUDP("udp4", s)
    if err != nil {
        fmt.Println(err)
        return
    }
}

在上面的客户端代码中,我是否可以设置源端口? 在上面的服务器代码中,有没有办法让我知道所使用的源端口?

1 个答案:

答案 0 :(得分:1)

https://golang.org/pkg/net/#DialUDP

func DialUDP(network string, laddr, raddr *UDPAddr) (*UDPConn, error)

laddr和raddr都使用UDPAddr结构,但是您未设置laddr。

laddr, err := net.ResolveUDPAddr("udp", "<source_int>:50000")

raddr := net.UDPAddr{IP: net.ParseIP("<dest>"), Port: 50000}

conn, err := net.DialUDP("udp", laddr, &raddr)