public void Send(byte[] datas) { if (Sock != null && Sock.Connected) { var args = SocketHelpers.AcquireSocketArg(); if (args != null) { args.Completed += SendAsyncComplete; args.UserToken = this; args.SetBuffer(datas, 0, datas .Length); Sock.SendAsync(args); // Logger.WriteMsg(string.Format("[Send] {0}", message.ToString()), ConsoleColor.DarkGray); unchecked { _bytesSent += (uint)datas.Length; } Interlocked.Add(ref _totalBytesSent, datas.Length); } else { } } }
/// <summary> /// 비동기 전송을 시작한다. /// </summary> void StartSend() { if (IsConnected() == false) { return; } try { SetSendEventArgsBufferList(SendingList, SendEventArgs.BufferList); // 비동기 전송 시작. bool pending = Sock.SendAsync(SendEventArgs); if (!pending) { ProcessSend(SendEventArgs); } } catch (Exception e) { SetReserveClosing(ServerOpt.ReserveClosingWaitMilliSecond); Console.WriteLine("send error!! close socket. " + e.Message); throw new Exception(e.Message, e); } }
public bool Send(byte[] data) { BufferQueue.Enqueue(data); if (!SendIng) { if (InitData()) { SendIng = true; Sock.SendAsync(_send); return(true); } } return(false); }
private void BeginSend(SocketAsyncEventArgs e) { if (e.SocketError != SocketError.Success) { Free(); return; } int offset = e.Offset + e.BytesTransferred; if (offset < e.Buffer.Length) { if (BufferLenght > 0) { int length = BufferLenght; if (offset + length > e.Buffer.Length) { length = e.Buffer.Length - offset; } e.SetBuffer(offset, length); Sock.SendAsync(_send); } else { e.SetBuffer(offset, e.Count - e.Offset - e.BytesTransferred); Sock.SendAsync(_send); } } else { if (InitData()) { Sock.SendAsync(_send); } else { SendIng = false; } } }