1 Star 0 Fork 0

simple/simple.io

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
client.go 1.89 KB
一键复制 编辑 原始数据 按行查看 历史
simple 提交于 2024-12-01 23:12 +08:00 . refactor(log): 优化日志
package socket
import (
"fmt"
"log/slog"
"net"
"time"
)
type Client interface {
Dial(address string) (*Socket, error)
DialTimeout(address string, timeout time.Duration) (*Socket, error)
Conn() net.Conn
Close() error
}
type TcpClient struct {
tcpConn *net.TCPConn
}
func NewTcpClient() *TcpClient {
return &TcpClient{}
}
func (t *TcpClient) Dial(address string) (*Socket, error) {
return t.DialTimeout(address, time.Second*30)
}
func (t *TcpClient) DialTimeout(address string, timeout time.Duration) (*Socket, error) {
tcpAddr, err := net.ResolveTCPAddr("tcp", address)
if err != nil {
return nil, err
}
if conn, err := net.DialTimeout(tcpAddr.Network(), tcpAddr.String(), timeout); err != nil {
return nil, err
} else {
slog.Debug(fmt.Sprintf("TCP client connection established successfully %s->%s", conn.LocalAddr(), conn.RemoteAddr()))
t.tcpConn = conn.(*net.TCPConn)
return NewSocket(t.tcpConn), nil
}
}
func (t *TcpClient) Conn() net.Conn {
return t.tcpConn
}
func (t *TcpClient) Close() error {
if t.tcpConn != nil {
return t.tcpConn.Close()
}
return nil
}
type UdpClient struct {
udpConn *net.UDPConn
}
func NewUdpClient() *UdpClient {
return &UdpClient{}
}
func (u *UdpClient) Dial(address string) (*Socket, error) {
return u.DialTimeout(address, time.Second*30)
}
func (u *UdpClient) DialTimeout(address string, timeout time.Duration) (*Socket, error) {
udpAddr, err := net.ResolveUDPAddr("udp", address)
if err != nil {
return nil, err
}
if conn, err := net.DialTimeout(udpAddr.Network(), udpAddr.String(), timeout); err != nil {
return nil, err
} else {
slog.Debug(fmt.Sprintf("UDP client connection established successfully %s->%s", conn.LocalAddr(), conn.RemoteAddr()))
u.udpConn = conn.(*net.UDPConn)
return NewSocket(u.udpConn), nil
}
}
func (u *UdpClient) Conn() net.Conn {
return u.udpConn
}
func (u *UdpClient) Close() error {
return u.udpConn.Close()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/simple-set/simple.io.git
git@gitee.com:simple-set/simple.io.git
simple-set
simple.io
simple.io
v1.6.5

搜索帮助