public void Send( int opcode, byte []buffer, int len ) { if ( buffer == null ) return; mutex.WaitOne(); if ( result == null ) result=new ByteArrayBuilder(); byte []nb = null; if ( len == buffer.Length ) nb = buffer; else { nb = new byte[ len ]; Buffer.BlockCopy( buffer, 0, nb, 0, len ); } len -=2; nb[ 1 ] = (byte)( len & 0xff ); nb[ 0 ] = (byte)( ( len >> 8 ) & 0xff ); nb[ 2 ] = (byte)( opcode & 0xff ); nb[ 3 ] = (byte)( ( opcode >> 8 ) & 0xff ); if ( needEncode ) Encode( nb ); result.Add( nb ); mutex.ReleaseMutex(); }
public void Send( OpCodes opcode, byte []buffer ) { if ( buffer == null ) return; mutex.WaitOne(); if ( result == null ) result=new ByteArrayBuilder(); buffer[ 1 ] = (byte)( ( buffer.Length - 2 ) & 0xff ); buffer[ 0 ] = (byte)( ( ( buffer.Length - 2 ) >> 8 ) & 0xff ); buffer[ 2 ] = (byte)( (int)opcode & 0xff ); buffer[ 3 ] = (byte)( ( (int)opcode >> 8 ) & 0xff ); if ( needEncode ) Encode( buffer ); result.Add( buffer ); mutex.ReleaseMutex(); }
public override void RunSend() { mutex.WaitOne(); if(result==null) return; int sz=sock.Send(result); if( sz <= 0 ) { Dispose(); return; } if(result.Length > sz) { // HexViewer.View( result, 0, sz ); result.Remove(0, sz); return; } result=null; mutex.ReleaseMutex(); return; }
public void Send( byte []buffer ) { if ( buffer == null ) return; mutex.WaitOne(); if ( result == null ) result=new ByteArrayBuilder(); if ( needEncode ) Encode( buffer ); result.Add( buffer ); mutex.ReleaseMutex(); }
void iSend(ServerGroupMessageType type, Hashtable msg) { ByteArrayBuilder b=new ByteArrayBuilder(false); b.Add( (byte)type ); uint id=GetID(); sendids.Add(id); if(sendids.Count>100)sendids.Remove(0); b.Add( id ); MemoryStream ms=new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms, msg); b.Add( ms.ToArray() ); byte[] bs=b; sock.SendTo(bs, target); DoRecv(bs, bs.Length); }