Exemple #1
0
        public void Run(byte[] binData)
        {
            IPAddress ip           = IPAddress.Parse("127.0.0.1");
            Socket    clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                clientSocket.Connect(new IPEndPoint(ip, 8081)); //zsummerX/example/frameStressTest server default port
                Console.WriteLine("connect Success.");
            }
            catch
            {
                Console.WriteLine("connect Failed");
                return;
            }
            do
            {
                var sendData = new System.Collections.Generic.List <byte>();

                NetHeader head = new NetHeader();
                head.packLen = (UInt32)(4 + 2 + 2 + binData.Length);
                head.protoID = Proto4z.EchoPack.getProtoID();

                sendData.AddRange(head.__encode());
                sendData.AddRange(binData);
                clientSocket.Send(sendData.ToArray());



                var       recvBytes = new byte[2000];
                uint      curLen    = 0;
                uint      needLen   = 4 + 2 + 2;
                uint      recvLen   = 0;
                NetHeader recvHead  = new NetHeader();
                do
                {
                    recvLen = (uint)clientSocket.Receive(recvBytes, (int)curLen, (int)needLen, System.Net.Sockets.SocketFlags.None);
                    if (recvLen == 0)
                    {
                        return;
                    }
                    curLen  += recvLen;
                    needLen -= recvLen;
                    if (needLen == 0 && curLen == 4 + 2 + 2) //head already read finish
                    {
                        int pos = 0;
                        recvHead.__decode(recvBytes, ref pos);
                        needLen = recvHead.packLen - 4 - 2 - 2;
                    }
                    else if (needLen == 0)
                    {
                        if (recvHead.protoID == Proto4z.EchoPack.getProtoID())
                        {
                            Proto4z.EchoPack result = new Proto4z.EchoPack();
                            int pos = 4 + 2 + 2;
                            result.__decode(recvBytes, ref pos);
                            //System.Console.WriteLine("echo =" + result.text.val);
                        }
                        break;
                    }
                    recvLen = 0;
                } while (true);
            } while (true);
        }
Exemple #2
0
    public void Run()
    {
        RC4Encryption rc4Server = new RC4Encryption();
        RC4Encryption rc4Client = new RC4Encryption();

        rc4Server.makeSBox("zhangyawei");
        rc4Client.makeSBox("zhangyawei");

        IPAddress ip           = IPAddress.Parse("127.0.0.1");
        Socket    clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        try
        {
            clientSocket.Connect(new IPEndPoint(ip, 26001));
            Debug.logger.Log("connect Success.");
        }
        catch
        {
            Debug.logger.Log("connect Failed");
            return;
        }
        if (true)
        {
            ClientAuthReq req     = new ClientAuthReq("test", "123");
            var           binData = req.__encode().ToArray();
            //binData = rc4Client.encryption(binData, binData.Length());

            var sendData = new System.Collections.Generic.List <byte>();

            NetHeader head = new NetHeader();
            head.packLen = (UInt32)(4 + 2 + 2 + binData.Length);
            head.protoID = Proto4z.ClientAuthReq.getProtoID();
            sendData.AddRange(head.__encode());
            sendData.AddRange(binData);
            clientSocket.Send(sendData.ToArray());

            var       recvBytes = new byte[2000];
            uint      curLen    = 0;
            uint      needLen   = 4 + 2 + 2; //暂时分两段读 后面要改buff接收提高效率
            uint      recvLen   = 0;
            NetHeader recvHead  = new NetHeader();
            do
            {
                recvLen = (uint)clientSocket.Receive(recvBytes, (int)curLen, (int)needLen, System.Net.Sockets.SocketFlags.None);//第一段
                if (recvLen == 0)
                {
                    // remote close socket.
                    return;
                }
                curLen  += recvLen;
                needLen -= recvLen;
                if (needLen == 0 && curLen == 4 + 2 + 2) ////第一段 完成
                {
                    int pos = 0;
                    recvHead.__decode(recvBytes, ref pos);
                    needLen = recvHead.packLen - 4 - 2 - 2; //设置第二段
                }
                else if (needLen == 0)                      //第二段完成
                {
                    if (recvHead.protoID == Proto4z.ClientAuthResp.getProtoID())
                    {
                        ClientAuthResp result = new ClientAuthResp();
                        int            pos    = 4 + 2 + 2;
                        result.__decode(recvBytes, ref pos);

                        Debug.logger.Log("ClientAuthResp: account=" + result.account + ", token=" + result.token + ",retCode=" + result.retCode);
                        int t = 0;
                        t++;
                    }
                    else if (true) //other proto
                    {
                    }
                    break; //一个协议接收处理完毕后break
                }
                recvLen = 0;
            } while (true);
        }
    }
Exemple #3
0
        public void Run(byte[] binData)
        {

            IPAddress ip = IPAddress.Parse("127.0.0.1");
            Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                clientSocket.Connect(new IPEndPoint(ip, 8081)); //zsummerX/example/frameStressTest server default port 
                Console.WriteLine("connect Success.");
            }
            catch
            {
                Console.WriteLine("connect Failed");
                return;
            }
            do
            {
                var sendData = new System.Collections.Generic.List<byte>();

                NetHeader head = new NetHeader();
                head.packLen = (UInt32)(4 + 2 + 2 + binData.Length);
                head.protoID = Proto4z.EchoPack.getProtoID();

                sendData.AddRange(head.__encode());
                sendData.AddRange(binData);
                clientSocket.Send(sendData.ToArray());


                
                
                var recvBytes = new byte[2000];
                uint curLen = 0;
                uint needLen = 4 + 2 + 2;
                uint recvLen = 0;
                NetHeader recvHead = new NetHeader();
                do
                {
                    recvLen = (uint)clientSocket.Receive(recvBytes, (int)curLen, (int)needLen, System.Net.Sockets.SocketFlags.None);
                    if (recvLen == 0)
                    {
                        return;
                    }
                    curLen += recvLen;
                    needLen -= recvLen;
                    if (needLen == 0 && curLen == 4 + 2 + 2) //head already read finish
                    {
                        int pos = 0;
                        recvHead.__decode(recvBytes, ref pos);
                        needLen = recvHead.packLen - 4 - 2 - 2;
                    }
                    else if (needLen == 0)
                    {
                        if (recvHead.protoID == Proto4z.EchoPack.getProtoID())
                        {
                            Proto4z.EchoPack result = new Proto4z.EchoPack();
                            int pos = 4+2+2;
                            result.__decode(recvBytes, ref pos);
                            //System.Console.WriteLine("echo =" + result.text.val);
                        }
                        break;
                    }
                    recvLen = 0;
                } while (true);


            } while (true);

        }