41 lines
853 B
Go
41 lines
853 B
Go
package gameserver
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"net"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
// testUDPConn wraps a UDP socket for the smoke test client.
|
||
|
|
type testUDPConn struct {
|
||
|
|
conn *net.UDPConn
|
||
|
|
addr *net.UDPAddr
|
||
|
|
}
|
||
|
|
|
||
|
|
func dialUDP(serverAddr string) (*testUDPConn, error) {
|
||
|
|
server, err := net.ResolveUDPAddr("udp", serverAddr)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1)})
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return &testUDPConn{conn: conn, addr: server}, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (c *testUDPConn) write(data []byte) (int, error) {
|
||
|
|
return c.conn.WriteToUDP(data, c.addr)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (c *testUDPConn) read() ([]byte, error) {
|
||
|
|
buf := make([]byte, 65536)
|
||
|
|
n, _, err := c.conn.ReadFromUDP(buf)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return buf[:n], nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (c *testUDPConn) setReadDeadline(t time.Time) {
|
||
|
|
_ = c.conn.SetReadDeadline(t)
|
||
|
|
}
|