예제 #1
0
        public void Send(Pt pt)
        {
            if (pt == null)
            {
                OnInfo("--------------------error pt");
                return;
            }

            byte[] data = pt.toBinary();
            OnInfo("--------------------start send:" + (data.Length + 10));

            if ((this.socket == null) || (!this.socket.Connected))
            {
                OnInfo("--------------------send,no net");
                return;
            }

            int allLen = data.Length + 10;

            allLen = allLen ^ PswCode;
            byte[] bytesLen = ByteAr_b.i2b(allLen);
            byte[] bytesPt  = ByteAr_b.s2b(pt.GetID());
            byte[] bytesSeq = ByteAr_b.i2b(pt.seq);


            byte[] allData = new byte[data.Length + 10];
            Array.Copy(bytesLen, 0, allData, 0, bytesLen.Length);
            Array.Copy(bytesPt, 0, allData, bytesLen.Length, bytesPt.Length);
            Array.Copy(bytesSeq, 0, allData, bytesLen.Length + bytesPt.Length, bytesSeq.Length);
            Array.Copy(data, 0, allData, bytesLen.Length + bytesPt.Length + bytesSeq.Length, data.Length);

            lock (send_buf)
            {
                if (send_len == 0)
                {
                    allData.CopyTo(send_buf, send_len);
                    send_len = send_len + allData.Length;
                    BeginSend();
                }
                else
                {
                    allData.CopyTo(send_buf, send_len);
                    send_len = send_len + allData.Length;
                }
            }
        }
예제 #2
0
 public bool write_int(uint data)
 {
     return(write_bytes(ByteAr_b.i2b(data)));
 }