예제 #1
0
        static async Task ReadCommand(IFiberRw fiberRw)
        {
            var cmd = await fiberRw.ReadInt32();

            switch (cmd)
            {
            case 1001:
            {
                var isSuccess = await fiberRw.ReadBoolean();

                Console.WriteLine(await fiberRw.ReadString());

                if (isSuccess)
                {
                    Data data = new Data()
                    {
                        Id   = Guid.NewGuid(),
                        Time = DateTime.Now
                    };

                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(2000);     //发送数据
                            fiberRw.Write(data);


                            fiberRw.Write(3000);     //发送消息
                            fiberRw.Write("EMMMMMMMMMMMMMMMMMMMMM...");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;

            case 3001:
            {
                using (var data = await fiberRw.ReadMemory())
                {
                    Console.WriteLine(data.Value.Length);

                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(3000);
                            fiberRw.Write("EMMMMMMMMMMMMMMMMMMMMM");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;
            }
        }
예제 #2
0
 private static async Task SendTest(IFiberRw fiberRw)
 {
     fiberRw.Write((++id).ToString());
     fiberRw.Write(new Random().Next(10, 10000));
     fiberRw.Write(new Random().Next(10, 10000).ToString());
     await fiberRw.Flush();
 }
예제 #3
0
파일: Program.cs 프로젝트: Mrwch/ZYSOCKET-V
        private static async Task SendTest(IFiberRw fiberRw)
        {
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);

            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);

            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("111111111111111111111111111111111111111111111111\r\n"), false);
            fiberRw.Write(System.Text.Encoding.Default.GetBytes("1\r\n"), false);



            await fiberRw.Flush();
        }
예제 #4
0
 private static async Task SendTest(IFiberRw fiberRw)
 {
     await await fiberRw.Sync.Ask(() =>
     {
         fiberRw.Write((++id).ToString());
         return(fiberRw.Flush());
     });
 }
예제 #5
0
        static async ValueTask DataOnByLine(IFiberRw <string> fiberRw)
        {
            var id = await fiberRw.ReadString();

            await await fiberRw.Sync.Ask(() =>
            {
                fiberRw.Write(id);
                return(fiberRw.Flush());
            });
        }
예제 #6
0
        static async void RunIng(IFiberRw <string> fiberRw, string id, int time)
        {
            Console.WriteLine($"{id} start");
            await Task.Delay(time);

            Console.WriteLine($"{id} close");

            fiberRw.Write(id);
            await fiberRw.Flush();
        }
예제 #7
0
        static async Task ReadCommand(IFiberRw fiberRw)
        {
            var cmd = await fiberRw.ReadInt32();

            switch (cmd)
            {
            case 1001:
            {
                var isSuccess = await fiberRw.ReadBoolean();

                Console.WriteLine(await fiberRw.ReadString());

                if (isSuccess)
                {
                    TestLib.Data data = new TestLib.Data()
                    {
                        Id   = Guid.NewGuid(),
                        Time = DateTime.Now
                    };

                    fiberRw.Write(2000);         //发送数据
                    fiberRw.Write(data);
                    await fiberRw.Flush();

                    fiberRw.Write(3000);         //发送消息
                    fiberRw.Write("EMMMMMMMMMMMMMMMMMMMMM...");
                    await fiberRw.Flush();
                }
            }
            break;

            case 3001:
            {
                Console.WriteLine(await fiberRw.ReadString());
            }
            break;
            }
        }
예제 #8
0
        private async void OnCompleted(IFiberRw <HttpToken> fiberRw, WriteBytes write)
        {
            Task <int> WSend()
            {
                var length = write.Stream.Length - fiberRw.UserToken.HttpHandlerPostion;

                write.Stream.Position = fiberRw.UserToken.ContentPostion.postion;
                write.Write(length.ToString(), false);
                write.Flush(false);
                return(fiberRw.Flush());
            }

            await await fiberRw.Sync.Ask(WSend);
        }
예제 #9
0
        static async void RunIng(IFiberRw <string> fiberRw, string id, int time)
        {
            try
            {
                Console.WriteLine($"{id} start");
                await Task.Delay(time);

                Console.WriteLine($"{id} close");

                fiberRw.Write(id);
                await fiberRw.Flush();
            }
            catch (Exception er)
            {
                Console.WriteLine(er.Message);
            }
        }
예제 #10
0
        static async ValueTask DataOnByLine(IFiberRw fiberRw)
        {
            var len = await fiberRw.ReadInt32();

            var cmd = await fiberRw.ReadInt32();

            var p1 = await fiberRw.ReadInt32();

            var p2 = await fiberRw.ReadInt64();

            var p3 = await fiberRw.ReadDouble();

            var p4 = await fiberRw.ReadSingle();

            var p5 = await fiberRw.ReadBoolean();

            var p6 = await fiberRw.ReadBoolean();

            var p7 = await fiberRw.ReadString();



            using (var p8 = await fiberRw.ReadMemory())
            {
                var p9 = await fiberRw.ReadInt16();

                // var p10 = await fiberRw.ReadObject<List<Guid>>();


                fiberRw.Write(len);
                fiberRw.Write(cmd);
                fiberRw.Write(p1);
                fiberRw.Write(p2);
                fiberRw.Write(p3);
                fiberRw.Write(p4);
                fiberRw.Write(p5);
                fiberRw.Write(p6);
                fiberRw.Write(p7);
                fiberRw.Write(p8);
                fiberRw.Write(p9);
                // fiberRw.Write(p10);
                await fiberRw.Flush();
            }
        }
예제 #11
0
        public async void fortunes(IFiberRw <HttpToken> fiberRw, WriteBytes write)
        {
            try
            {
                var data = await fiberRw.UserToken.Db.LoadFortunesRows();

                Task <int> WSend()
                {
                    write.Write(_fortunesTableStart.Data, 0, _fortunesTableStart.Length);
                    foreach (var item in data)
                    {
                        write.Write(_fortunesRowStart.Data, 0, _fortunesRowStart.Length);
                        write.Write(item.Id.ToString(CultureInfo.InvariantCulture), false);
                        write.Write(_fortunesColumn.Data, 0, _fortunesColumn.Length);
                        write.Write(System.Web.HttpUtility.HtmlEncode(item.Message), false);
                        write.Write(_fortunesRowEnd.Data, 0, _fortunesRowEnd.Length);
                    }
                    write.Write(_fortunesTableEnd.Data, 0, _fortunesTableEnd.Length);

                    var length = write.Stream.Length - fiberRw.UserToken.HttpHandlerPostion;

                    write.Stream.Position = fiberRw.UserToken.ContentPostion.postion;
                    write.Write(length.ToString(), false);
                    write.Flush(false);
                    return(fiberRw.Flush());
                }
                if (fiberRw.UserToken != null)
                {
                    await await fiberRw.Sync.Ask(WSend);
                }
            }
            catch (Exception e_)
            {
                write.Write(e_.Message);
                OnCompleted(fiberRw, write);
            }
        }
예제 #12
0
        async Task ReadCommand(IFiberRw fiberRw)
        {
            var cmd = await fiberRw.ReadInt32();

            switch (cmd)
            {
            case 1001:
            {
                var isSuccess = await fiberRw.ReadBoolean();

                if (isSuccess)
                {
                    await fiberRw.ReadString();

                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(2000);
                            return(fiberRw.Flush());
                        });
                }
                else
                {
                    string msg = await fiberRw.ReadString();

                    this.BeginInvoke(new EventHandler((a, b) => {
                            MessageBox.Show(msg);
                            LogOn();
                        }));
                }
            }
            break;

            case 2001:
            {
                var list = await fiberRw.ReadObject <List <string> >();

                this.BeginInvoke(new EventHandler((a, b) =>
                    {
                        this.listView1.Items.Clear();
                        this.comboBox1.Items.Clear();
                        foreach (var item in list)
                        {
                            this.listView1.Items.Add(new ListViewItem(item));
                        }
                        this.comboBox1.Items.Add("ALL");
                        this.comboBox1.Items.AddRange(list.ToArray());
                    }));
            }
            break;

            case 2002:    //通知新用户登入
            {
                var user = await fiberRw.ReadString();

                this.BeginInvoke(new EventHandler((a, b) =>
                    {
                        this.listView1.Items.Add(user, user, 0);
                        this.comboBox1.Items.Add(user);
                    }));
            }
            break;

            case 3001:
            {
                string username = await fiberRw.ReadString();

                string msg = await fiberRw.ReadString();

                this.BeginInvoke(new EventHandler((a, b) =>
                    {
                        this.richTextBox1.AppendText($"{username}:{msg}\r\n");
                    }));
            }
            break;

            case 3002:
            {
                string username = await fiberRw.ReadString();

                string msg = await fiberRw.ReadString();

                this.BeginInvoke(new EventHandler((a, b) =>
                    {
                        this.richTextBox1.AppendText($"{username}>>{msg}\r\n");
                    }));
            }
            break;

            case 4000:
            {
                string username = await fiberRw.ReadString();


                this.BeginInvoke(new EventHandler((a, b) =>
                    {
                        this.listView1.Items.RemoveByKey(username);
                        this.comboBox1.Items.Remove(username);
                    }));
            }
            break;
            }
        }
예제 #13
0
        static async Task ReadCommand(IFiberRw <UserInfo> fiberRw)
        {
            int?cmd = await fiberRw.ReadInt32();

            switch (cmd)
            {
            case 1000:     //用户登入,我们需要读取一个用户名 一个密码 然后验证
            {
                string username = await fiberRw.ReadString();

                string password = await fiberRw.ReadString();

                if (string.Equals(username, "test", StringComparison.Ordinal) && string.Equals(password, "password", StringComparison.Ordinal))
                {
                    fiberRw.UserToken = new UserInfo()
                    {
                        UserName = username,
                        Password = password
                    };

                    //fiberRw.Async.UserToken = fiberRw.UserToken; //我们可以断开后对userinfo做一些事情
                    //(已无效,默认 fiberRw.Async.UserToken 就等于 fiberRw.UserToken)

                    fiberRw.Write(1001);          //发送登入成功
                    fiberRw.Write(true);
                    fiberRw.Write("logon ok");
                    await fiberRw.Flush();
                }
                else
                {
                    fiberRw.Write(1001);         //发送登入失败
                    fiberRw.Write(false);
                    fiberRw.Write("logon fail");
                    await fiberRw.Flush();
                }
            }
            break;

            case 2000:     //读取一个数据 然后保存到当前用户对象中
            {
                if (fiberRw.UserToken != null)
                {
                    fiberRw.UserToken.Data = await fiberRw.ReadObject <TestLib.Data>();
                }
                else
                {
                    fiberRw.Async.Disconnect();
                }
            }
            break;

            case 3000:     //在屏幕上显示消息 然后告诉客户端显示成功
            {
                string msg = await fiberRw.ReadString();

                Console.WriteLine(msg);

                fiberRw.Write(3001);
                fiberRw.Write("msg show");
                await fiberRw.Flush();
            }
            break;
            }
        }
예제 #14
0
파일: Program.cs 프로젝트: Mrwch/ZYSOCKET-V
        static async Task ReadCommand(IFiberRw <UserInfo> fiberRw)
        {
            int?cmd = await fiberRw.ReadInt32();

            switch (cmd)
            {
            case 1000:     //用户登入,我们需要读取一个用户名 一个密码 然后验证
            {
                string username = await fiberRw.ReadString();

                string password = await fiberRw.ReadString();

                if (CheckLogOn(username, password))
                {
                    Console.WriteLine(username + " 登入");

                    fiberRw.UserToken = new UserInfo()
                    {
                        UserName = username,
                    };


                    UserList.Add(fiberRw);

                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(1001);      //发送登入成功
                            fiberRw.Write(true);
                            fiberRw.Write("logon ok");
                            return(fiberRw.Flush());
                        });
                }
                else
                {
                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(1001);     //发送登入失败
                            fiberRw.Write(false);
                            fiberRw.Write("logon fail");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;

            case 2000:     //GET USERLIST
            {
                if (fiberRw.UserToken != null)
                {
                    var x = from p in UserList
                            where p != fiberRw
                            select p.UserToken.UserName;

                    fiberRw.Write(2001);
                    fiberRw.Write(x.ToList());
                    await fiberRw.Flush();

                    foreach (var item in UserList.Where(p => p != fiberRw))
                    {
                        await await item.Sync.Ask(() =>
                            {
                                item.Write(2002);
                                item.Write(fiberRw.UserToken.UserName);
                                return(item.Flush());
                            });
                    }
                }
            }
            break;

            case 3000:
            {
                if (fiberRw.UserToken != null)
                {
                    string targetuser = await fiberRw.ReadString();

                    string msg = await fiberRw.ReadString();

                    if (targetuser.Equals("ALL", StringComparison.OrdinalIgnoreCase))
                    {
                        foreach (var item in UserList.AsReadOnly())
                        {
                            if (item != fiberRw)
                            {
                                await await item.Sync.Ask(() =>
                                    {
                                        item.Write(3001);
                                        item.Write(fiberRw.UserToken.UserName);
                                        item.Write(msg);
                                        return(item.Flush());
                                    });
                            }
                        }
                    }
                    else
                    {
                        var user = UserList.FirstOrDefault(p => p.UserToken.UserName == targetuser);

                        if (user != null)
                        {
                            await await user.Sync.Ask(() =>
                                {
                                    user.Write(3002);
                                    user.Write(fiberRw.UserToken.UserName);
                                    user.Write(msg);
                                    return(user.Flush());
                                });
                        }
                    }
                }
            }
            break;
            }
        }
예제 #15
0
        static async Task <bool> ReadCommand(IFiberRw <UserInfo> fiberRw)
        {
            int?cmd = await fiberRw.ReadInt32();

            switch (cmd)
            {
            case 1000:     //用户登入,我们需要读取一个用户名 一个密码 然后验证
            {
                string username = await fiberRw.ReadString();

                string password = await fiberRw.ReadString();

                if (string.Equals(username, "test", StringComparison.Ordinal) && string.Equals(password, "password", StringComparison.Ordinal))
                {
                    fiberRw.UserToken = new UserInfo()
                    {
                        UserName = username,
                        Password = password
                    };

                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(1001);      //发送登入成功
                            fiberRw.Write(true);
                            fiberRw.Write("logon ok");
                            return(fiberRw.Flush());
                        });
                }
                else
                {
                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(1001);     //发送登入失败
                            fiberRw.Write(false);
                            fiberRw.Write("logon fail");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;

            case 2000:     //读取一个数据 然后保存到当前用户对象中
            {
                if (fiberRw.UserToken != null)
                {
                    fiberRw.UserToken.Data = await fiberRw.ReadObject <TestLib.Data>();
                }
                else
                {
                    fiberRw.Async.Disconnect();
                }
            }
            break;

            case 3000:     //在屏幕上显示消息 然后告诉客户端显示成功
            {
                using (var data = await fiberRw.ReadMemory())
                {
                    await await fiberRw.Sync.Ask(() =>
                        {
                            fiberRw.Write(3001);
                            fiberRw.Write("msg show");
                            return(fiberRw.Flush());
                        });
                }
            }
            break;
            }

            return(false);
        }