public void Send(Message message) { try { Octets oc = new Octets(); oc.push(message.getType()); oc.push(0); // message size, push later int oldSize = oc.Size; oc.push(message); int size = oc.Size - oldSize; oc.push_rollback(size + 4); oc.push(size); // message size, push now oc.push_count(size); socket.BeginSend(oc.getBytes(), 0, oc.Size, SocketFlags.None, new AsyncCallback(OnSendResult), null); } catch (Exception e) { UnityEngine.Debug.LogError(e); Close(); } }
private void onReceiveResult(IAsyncResult result) { try { int count = socket.EndReceive(result); if (count == 0) { Close(); return; } ibuffer.push_count(count); Decode(); int offset, size; byte[] bytes = ibuffer.getBytesForWrite(out offset, out size); socket.BeginReceive(bytes, offset, size, SocketFlags.None, new AsyncCallback(onReceiveResult), null); } catch (Exception e) { UnityEngine.Debug.LogError(e); Close(); } }