Example #1
0
 public static List<P2PMessage> GenFromMS(MemoryStream ms)
 {
     var now_pos = 0;
     List<P2PMessage> ret = new List<P2PMessage>();
     var max_pos = ms.Position;
     ms.Position = 0;
     while (now_pos < max_pos) {
         var buffer_head = new byte[8];
         ms.Read(buffer_head, 0, 8);
         var length = BitConverter.ToInt32(buffer_head, 4);
         var type_value = BitConverter.ToInt32(buffer_head);
         var buffer_tail = new byte[length];
         ms.Read(buffer_tail, 0, length);
         var now_item = new P2PMessage();
         switch (type_value)
         {
             case 0:
                 now_item = new GetDataMessage(buffer_tail);
                 break;
             case 1:
                 now_item = new GetFileInfoMessage(buffer_tail);
                 break;
             case 2:
                 now_item = new GetBlockInfoMessage(buffer_tail);
                 break;
             case 3:
                 now_item =  new DataMessage(buffer_tail);
                 break;
             case 4:
                 now_item = new ErrorMessage(buffer_tail);
                 break;
             case 5:
                 now_item =  new FileInfoMessage(buffer_tail);
                 break;
             case 6:
                 now_item = new BlockInfoMessage(buffer_tail);
                 break;
             case 7:
                 now_item = new OKMessage(buffer_tail);
                 break;
             case 8:
                 now_item = new CloseMessage();
                 break;
             case 9:
                 now_item = new AliveMessage();
                 break;
             default:
                 throw new System.Exception("not allow");
         }
         now_item.type = (P2PMessageType)type_value;
         ret.Add(now_item);
         now_pos += 8 + length;
     }
     Debug.Assert(now_pos == max_pos);
     return ret;
 }
Example #2
0
 public static P2PMessage GenFromSocket(System.Net.Sockets.NetworkStream stream, int type_value, int length)
 {
     P2PMessage ret;
     var buffer = new byte[length];
     stream.Read(buffer, 0, length);
     switch (type_value)
     {
         case 0:
             ret = new GetDataMessage(buffer);
             break;
         case 1:
             ret = new GetFileInfoMessage(buffer);
             break;
         case 2:
             ret = new GetBlockInfoMessage(buffer);
             break;
         case 3:
             ret = new DataMessage(buffer);
             break;
         case 4:
             ret = new ErrorMessage(buffer);
             break;
         case 5:
             ret = new FileInfoMessage(buffer);
             break;
         case 6:
             ret = new BlockInfoMessage(buffer);
             break;
         case 7:
             ret = new OKMessage(buffer);
             break;
         case 8:
             ret = new CloseMessage();
             break;
         default:
             throw new System.Exception("not allow");
     }
     return ret;
 }
Example #3
0
        public void SendCloseMessage()
        {
            var close = new CloseMessage();

            send(close);
        }