Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }