/// <summary> /// 从形如IP:端口号的字符串中返回一个EndPoint实例 /// </summary> /// <param name="ipAndPort"></param> /// <returns></returns> public static MessageIPAndPort GetEndPointFromString(string ipAndPort) { MessageIPAndPort result = new MessageIPAndPort(); var split = ipAndPort.Split(':'); if (split.Length != 2) { result.Invalid = true; } else { IPAddress.TryParse(split[0], out var address); int.TryParse(split[1], out var port); if (address != null && (port > 0 && port <= 65535)) { result.IP = address.ToString(); result.Port = port; result.Invalid = false; } else { result.Invalid = true; } } return(result); }
/// <summary> /// 根据当前客户端种类构建消息 /// </summary> /// <param name="data"></param> /// <param name="messageIPAndPort"></param> /// <returns></returns> public byte[] InitMessageForForward(byte[] data, MessageIPAndPort messageIPAndPort) { string message = ""; byte[] dataResult = null; if (SelfType == SessionType.Client) { // 构建头 message += StaticResources.ClientHeaderLine + "\r\n"; } if (SelfType == SessionType.Server) { // 构建头 message += StaticResources.ServerHeaderLine + "\r\n"; } message += "IP:"; message += String.IsNullOrEmpty(messageIPAndPort.IP) ? StaticResources.SuccessMessageIP : messageIPAndPort.IP + ":" + messageIPAndPort.Port; message += "\r\n"; message += "Content-Length:" + data.Length; message += "\r\n"; message += "\r\n"; dataResult = Encoding.UTF8.GetBytes(message); var suffix = Encoding.UTF8.GetBytes("\r\n"); dataResult = dataResult.Concat(data).Concat(suffix).ToArray(); return(dataResult); }