package mmlclient import ( "fmt" "strings" ) // 发送MML原始消息 // ip 网元IP地址 // msg 指令 func MMLSendMsg(ip, msg string) (string, error) { // 创建MMLClient实例 client, err := NewMMLClient(ip) if err != nil { return "", fmt.Errorf("创建MMLClient实例失败:%v", err) } defer client.Close() // 发送数据 err = client.Send(msg) if err != nil { return "", fmt.Errorf("发送数据失败:%v", err) } // 接收数据 data, err := client.Receive() if err != nil { return "", fmt.Errorf("接收数据失败:%v", err) } return data, nil } // 发送MML // ip 网元IP地址 // msg 指令 func MMLSendMsgToString(ip, msg string) (string, error) { // 发送获取数据 str, err := MMLSendMsg(ip, msg) if err != nil { return "", err } // 截断 index := strings.Index(str, "\n") if index != -1 { str = str[:index] str = strings.ToLower(str) } // 命令成功 if strings.Contains(str, "ok") || strings.Contains(str, "OK") { return str, nil } return "", fmt.Errorf(str) } // 发送MML // ip 网元IP地址 // msg 指令 func MMLSendMsgToMap(ip, msg string) (map[string]string, error) { // 发送获取数据 str, err := MMLSendMsg(ip, msg) if err != nil { return nil, err } // 无数据 if strings.HasPrefix(str, "No Auth Data") { return nil, fmt.Errorf("no auth data") } // 初始化一个map用于存储拆分后的键值对 m := make(map[string]string) var items []string if strings.Contains(str, "\r\n") { // 按照分隔符"\r\n"进行拆分 items = strings.Split(str, "\r\n") } else if strings.Contains(str, "\n") { // 按照分隔符"\n"进行拆分 items = strings.Split(str, "\n") } // 遍历拆分后的结果 for _, item := range items { var pair []string if strings.Contains(item, "=") { // 按照分隔符"="进行拆分键值对 pair = strings.Split(item, "=") } else if strings.Contains(item, ":") { // 按照分隔符":"进行拆分键值对 pair = strings.Split(item, ":") } if len(pair) == 2 { // 将键值对存入map中 m[pair[0]] = pair[1] } } return m, err }