예제 #1
0
func (si *ServerInfo) ProcessProtoConn(conn net.Conn, pp *kdp.KDP) {
	// 将连接信息进行赋值
	connInfo := make(map[string]string)
	json.Unmarshal(pp.GetBody(), &connInfo) // 读取出连接时填写的 name 字段
	KolonseWeb.DefaultLogs().Info("收到连接请求数据 Remote:%v Local:%v info:%v",
		conn.RemoteAddr().String(),
		conn.LocalAddr().String(),
		string(pp.GetBody()))
	si.ChannelConn.SetConn(conn)
}
예제 #2
0
func Close(conn net.Conn, pp *kdp.KDP) {
	remoteAddr, ok := pp.Get("RemoteAddr")
	if !ok {
		panic("协议中没有找到 RemoteAddr")
	}
	cp, ok := ConnMap[remoteAddr]
	if !ok {
		return
	}
	cp.dstConn.Close()
}
예제 #3
0
func Req(conn net.Conn, pp *kdp.KDP) {
	remoteAddr, ok := pp.Get("RemoteAddr")
	if !ok {
		panic("协议中没有找到 RemoteAddr")
	}
	cp, ok := ConnMap[remoteAddr]
	if !ok {
		// 创建一个新的连接
		cpNew, err := Create(conn, remoteAddr)
		if err != nil {
			// 发送关闭连接请求
			return
		}
		ConnMap[remoteAddr] = cpNew
		cp = cpNew
	}
	// 将数据发送到连接上
	cp.dstConn.Write(pp.GetBody())
}
예제 #4
0
func (si *ServerInfo) ProcessProtoClose(conn net.Conn, pp *kdp.KDP) {
	remoteAddr, ok := pp.Get("RemoteAddr")
	if !ok {
		//  连接已经不存在 通知客户端关闭连接
		KolonseWeb.DefaultLogs().Error("协议不存在 RemoteAddr", remoteAddr)
		return //
	}
	pWho, ok := si.Parters[remoteAddr]
	if !ok {
		//  连接已经不存在 通知客户端关闭连接
		KolonseWeb.DefaultLogs().Error("RemoteAddr:%v not found", remoteAddr)
		return //
	}
	// 发送消息
	KolonseWeb.DefaultLogs().Info("向请求源 %v 发送数据,长度:%v",
		conn.RemoteAddr().String(),
		len(pp.GetBody()))
	pWho.conn.Close()
}