Files
tcpserver-client/Server/SubServer.go
T
2021-04-30 19:00:29 +08:00

66 lines
1.4 KiB
Go

package main
// 分配子网边界服务器地址的服务器
import (
"fmt"
"net"
"strconv"
"TCPServerClient/utils"
)
const (
DefaultSubServerIP = "localhost" // 服务器IP
DefaultSubServerPort = 50005 // 服务器端口号
)
type SubServer struct {
serverIP string
serverPort int
}
// 开启server,并建立监听
func (s *SubServer) start() {
fmt.Println("Starting the sub server ...")
// 初始化
s.serverIP=DefaultSubServerIP
s.serverPort=DefaultSubServerPort
// 创建 listener
listener, err := net.Listen("tcp", s.serverIP+":"+strconv.Itoa(s.serverPort))
if err != nil {
fmt.Println("Error listening", err.Error())
return
}
// 监听并接受来自客户端的连接,并进行处理
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting", err.Error())
return
}else{
fmt.Println("Sub Server Accept conn form "+conn.RemoteAddr().String())
}
// 处理客户端请求
go doSubServerStuff(conn)
}
}
/**
处理客户端请求:接收并打印客户端发来的消息
*/
func doSubServerStuff(conn net.Conn) {
for {
// 读取原始数据
buf := make([]byte, 512)
len, err := conn.Read(buf)
if err != nil {
fmt.Println("Error reading", err.Error())
return
}
msg:=string(buf[:len])
fmt.Println("Received raw data: %v", msg)
// 解密数据为可读格式
utils.DecryptMsgByDES(msg,DefaultPassword)
fmt.Println("Received decrypt data: %v", msg)
}
}