mirror of
https://gitee.com/willfree/tcpserver-client.git
synced 2026-10-04 19:52:23 +08:00
65 lines
1.8 KiB
Go
65 lines
1.8 KiB
Go
package main
|
|
// 可用服务器
|
|
// 每间隔3s,主动连接一次AddrServer,从而让AddrServer更新IP
|
|
|
|
import (
|
|
"TCPServerClient/utils"
|
|
"fmt"
|
|
"net"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
DefaultAddrServerIP = "localhost" // 地址服务器IP
|
|
DefaultAddrServerPort = 50000 // 地址服务器端口号
|
|
DefaultSyncInfo = "Sync Addr" // 同步IP地址的命令字段
|
|
DefaultPassword = "12345678" // 消息加解密密码。必须是八位
|
|
)
|
|
|
|
type SubServer struct {
|
|
addrServerIP string // 地址服务器IP
|
|
addrServerPort int // 地址服务器端口号
|
|
syncInfo string
|
|
password string
|
|
}
|
|
|
|
// 开启server,并建立监听
|
|
func (s *SubServer) start() {
|
|
fmt.Println("Starting the sub server ...")
|
|
// 初始化
|
|
s.addrServerIP=DefaultAddrServerIP
|
|
s.addrServerPort=DefaultAddrServerPort
|
|
s.password=DefaultPassword
|
|
s.syncInfo=DefaultSyncInfo
|
|
// 循环同步本机IP到地址服务器
|
|
s.doSubServerStuff()
|
|
}
|
|
|
|
/**
|
|
循环同步本机IP到地址服务器,间隔三秒
|
|
*/
|
|
func (s *SubServer) doSubServerStuff() {
|
|
for {
|
|
// 睡眠三秒
|
|
time.Sleep(time.Second*3)
|
|
// 创建TCP连接,连接地址服务器
|
|
conn, err := net.Dial("tcp", s.addrServerIP+":"+strconv.Itoa(s.addrServerPort))
|
|
if err != nil {
|
|
// 由于目标计算机积极拒绝而无法创建连接
|
|
fmt.Println("Error dialing to addr server", err.Error())
|
|
continue
|
|
}else{
|
|
fmt.Println("Successful conn to addr server : "+conn.RemoteAddr().String())
|
|
}
|
|
// 发送加密请求给服务器
|
|
_, err = conn.Write([]byte(utils.EncryptMsgByDES(s.syncInfo, s.password)))
|
|
if err != nil {
|
|
fmt.Println("Error writing", err.Error())
|
|
}else{
|
|
fmt.Println("Successful send addr info to addr server : "+conn.RemoteAddr().String())
|
|
}
|
|
// 关闭本次连接
|
|
_ = conn.Close()
|
|
}
|
|
} |