//CR NUL -> CR •ÏŠ·‚¨‚æ‚Ñ IAC‚©‚ç‚Í‚¶‚Ü‚éƒV[ƒPƒ“ƒX‚̈— private void ProcessBuffer(ByteDataFragment data) { int limit = data.Offset + data.Length; int offset = data.Offset; byte[] buf = data.Buffer; //Debug.WriteLine(String.Format("Telnet len={0}, proc={1}", data.Length, _negotiator.InProcessing)); while (offset < limit) { while (offset < limit && _negotiator.InProcessing) { if (_negotiator.Process(buf[offset++]) == TelnetNegotiator.ProcessResult.REAL_0xFF) { _callback.OnReception(_localdata.Set(buf, offset - 1, 1)); } } int delim = offset; while (delim < limit) { byte b = buf[delim]; if (b == 0xFF) { _negotiator.StartNegotiate(); break; } if (b == 0 && delim - 1 >= 0 && buf[delim - 1] == 0x0D) { break; //CR NULƒTƒ|[ƒg } delim++; } if (delim > offset) { _callback.OnReception(_localdata.Set(buf, offset, delim - offset)); //delim‚ÌŽè‘O‚܂ň— } offset = delim + 1; } }