Esempio n. 1
0
    public static void OnDataReceive(System.Object sender, DataEventArgs e)
    {
        print("buff length: " + e.Length + ", offset: " + e.Offset);

        if (e.Length <= 0)
        {
            return;
        }
//		CodedInputStream stream = CodedInputStream.CreateInstance(e.Data);
//		int length = (int)stream.ReadRawVarint32();
//		byte[] baseBytes = stream.ReadRawBytes (e.Length);
//		byte[] baseBytes = stream.ToArray();

        MemoryStream stream = new MemoryStream(e.Data);

        byte[] baseBytes = new byte[e.Length];
        stream.Read(baseBytes, e.Offset, e.Length);

        BasePacket basePacket = BasePacket.ParseFrom(baseBytes);
        int        packetId   = basePacket.PacketId;

        byte[]     namePacketBytes = basePacket.PacketData.ToByteArray();
        NamePacket response        = NamePacket.ParseFrom(namePacketBytes);

        print("packetId - " + packetId + ", response - " + response);
    }
Esempio n. 2
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(100, 130, 100, 25), "SuperSocket"))
        {
            buffer.Data = new byte[8192];
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(host), port);

            AsyncTcpSession client = new AsyncTcpSession(endPoint);
            client.Connected    += OnConnected;
            client.DataReceived += OnDataReceive;

            client.Connect();

            NamePacket.Builder b = new NamePacket.Builder();
            b.SetName("Client name data");
            NamePacket np = b.BuildPartial();

            MemoryStream stream = new MemoryStream();
            np.WriteTo(stream);
            byte[] bytes = stream.ToArray();

            BasePacket.Builder basePacketBuilder = new BasePacket.Builder();
            basePacketBuilder.SetPacketId(64553060);
            basePacketBuilder.SetPacketData(
                ByteString.CopyFrom(bytes)
                );

            BasePacket basePacket = basePacketBuilder.BuildPartial();

            sendMessage(client, basePacket);

            print("SuperSocket!");
        }
    }
        private void ConnectToServer(int retries)
        {
            //this loop allows for multiple attempts to connect to the server before timing out
            for (int i = 0; i < retries; i++)
            {
                UpdateStatus(">>Attempting to connect...");
                try {
                    ClientSocket.Connect(Server, 8888);
                } catch (Exception ex) {
                    UpdateStatus(ex.Message);
                }

                //once connected, the client sends a packet to the server to agknowledge logging in.
                if (ClientSocket.Connected)
                {
                    NetworkStream loginStream = ClientSocket.GetStream();
                    NamePacket    handshake   = new NamePacket(Environment.UserName);
                    loginStream.Write(handshake.CreateDataStream(), 0, handshake.PacketLength);
                    loginStream.Flush();
                    UpdateStatus("Server Connected ... " + Server);
                    //bwBroadcastStream.RunWorkerAsync();
                    break;
                }
                UpdateStatus(">> Waiting 3 Seconds before trying again.");
                DateTime start = DateTime.Now;
                while (DateTime.Now.Subtract(start).Seconds < 3)
                {
                }
            }
            if (!ClientSocket.Connected)
            {
                UpdateStatus("Connection Failed!!");
            }
        }
Esempio n. 4
0
    public void SetName(string _name)
    {
        try
        {
            NamePacket packet = new NamePacket();
            packet.id   = localID;
            packet.name = _name;

            socket.Emit("name", JsonUtility.ToJson(packet));
        }
        catch (Exception ex) { Debug.Log(ex.Message + " | " + ex.StackTrace); }
    }
Esempio n. 5
0
    public void setName(string name, NetworkCallBack callBack)
    {
        NetWorkServices netWorkServices = NetWorkServices.getInstance();
        NamePacket      packet          = new NamePacket();

        packet.name    = name;
        packet.type    = "CGI";
        packet.command = "setName";
        string  jsonStr = JSON.Dump(packet);
        Variant jsonObj = JSON.Load(jsonStr);

        netWorkServices.sendCGIRequest(jsonObj, callBack);
    }
Esempio n. 6
0
    public static void OnDataReceive2(System.Object sender, DataEventArgs e)
    {
        print("buff length: " + e.Length + ", offset: " + e.Offset);

        if (e.Length <= 0)
        {
            return;
        }

        Array.Copy(e.Data, 0, buffer.Data, buffer.Length, e.Length);
        buffer.Length += e.Length;

        CodedInputStream stream = CodedInputStream.CreateInstance(buffer.Data);

        while (!stream.IsAtEnd)
        {
            int markReadIndex = (int)stream.Position;
            int varint32      = (int)stream.ReadRawVarint32();

            if (varint32 <= (buffer.Length - (int)stream.Position))
            {
                try {
                    byte[] body = stream.ReadRawBytes(varint32);

                    NamePacket response = NamePacket.ParseFrom(body);
                    print("Response: " + response.ToString() + ", count: " + (++count));
                } catch (Exception exception) {
                    print(exception.Message);
                }
            }
            else
            {
                byte[] dest       = new byte[8192];
                int    remainSize = buffer.Length - markReadIndex;
                Array.Copy(buffer.Data, markReadIndex, dest, 0, remainSize);

                buffer.Data   = dest;
                buffer.Offset = 0;
                buffer.Length = remainSize;

                break;
            }
        }
    }
Esempio n. 7
0
        public void ReadDir(uint requestId)
        {
            // If the pending items list is null, OpenDir was never called
            if (pendingDirectoryItems == null)
            {
                var packet = new StatusPacket
                {
                    Id           = requestId,
                    StatusCode   = StatusPacket.Failure,
                    ErrorMessage = "directory not open"
                };

                sftp.Send(packet);
            }

            // If the pending items list is empty, we're done - send EOF
            if (pendingDirectoryItems.Count == 0)
            {
                var packet = new StatusPacket
                {
                    Id           = requestId,
                    StatusCode   = StatusPacket.Eof,
                    ErrorMessage = "no more files"
                };

                sftp.Send(packet);
            }
            else
            {
                // We have files to send...send a batch.
                // TODO - keep the batch small enough that we do not exceed the connection's max packet size
                // TODO - implement me!
                var packet = new NamePacket();

                // TODO - parameterize the max entry count (and eventually base it off packet size)
                while ((pendingDirectoryItems.Count > 0) && (packet.Entries.Count < 10))
                {
                    packet.Entries.Add(pendingDirectoryItems.Dequeue().AsPacketEntry());
                }

                sftp.Send(packet);
            }
        }
Esempio n. 8
0
        private void HandlePacket(RealPathPacket packet)
        {
            logger.LogDebug("Processing RealPath SFTP packet, Id={Id}, Path='{Path}'.", packet.Id, packet.Path);

            var name = new NamePacket
            {
                Id = packet.Id
            };

            // TODO - properly set Longname - need that from file system, too.
            var realPath = fileSystem.GetRealPath(packet.Path);

            name.AddEntry(new NamePacket.Entry
            {
                Filename = realPath,
                Longname = realPath     // TODO - fix!
            });

            Send(name);
        }