zoukankan      html  css  js  c++  java
  • windows phone使用Beetle实现对象交互的TCP通讯

        Beetle提供了基于Silverlight的实现Beetle.SL,由于WP7开发也是提供了Socket的支持所以Beetle.SL是完全可以在WP7下使用。还有ProtoBuf.net同样也支持WP7,因此可以通过Beetle.SL+ProtoBuf.net就能在WP7下实现基于对象传输的TCP通讯应用。

        首先新建一个WP项目,分别引用Beetle.WP.DLL,Beetle.WP.ProtoBuf.DLL和protobuf-net.DLL;以上组件分另可以到http://beetlesl.codeplex.com/http://code.google.com/p/protobuf-net/获取得到.接下来做个简单的客户查询应用.

    界面制定

    主要功能是登陆后就可以进行一个客户信息查询,可以输入需要查询的客户名称。

    详细代码实现

     创建一个基于ProtoBuf的Tcp连接,并在程序加载过程绑定相关事件

    private Beetle.ProtoBufAdapter.ProtoBufChannel mChannel = new Beetle.ProtoBufAdapter.ProtoBufChannel();
            private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
            {
                MessageAdapter.LoadMessage(GetType().Assembly);
                mChannel.Connected += OnConnected;
                mChannel.Disposed += OnDisposed;
                mChannel.Receive += OnReceive;
                mChannel.Error += OnError;
            }

    通过连接按钮事件进行一个TCP连接,并在连接成功后把查询按钮变成可用.

    private void cmdConnect_Click(object sender, RoutedEventArgs e)
            {
                mChannel.Connect(txtIPAddress.Text, 4520);
            }
            private void OnConnected(object sender, EventChannelArges e)
            {
               
                this.Dispatcher.BeginInvoke(() =>
                {
                    cmdConnect.IsEnabled = false;
                    cmdSearch.IsEnabled = true;
                    txtStatus.Text = "Connected";
                });
            }

    在查询按钮中进行一个查询对象查询,同时在接收事件中进行数据绑定即可。

    private void cmdSearch_Click(object sender, RoutedEventArgs e)
            {
                Packages.Search search = new Packages.Search();
                search.CompanyName = txtCustomerName.Text;
                MessageAdapter.Send(mChannel, search);
            }
            private void OnReceive(object sender, EventChannelReceiveArgs e)
            {
                MessageAdapter adapter = (MessageAdapter)e.Message;
                if (adapter.Message is Packages.SearchResult)
                {
                    Packages.SearchResult result = (Packages.SearchResult)adapter.Message;
                    this.Dispatcher.BeginInvoke(() =>
                    {
                        lstCustomers.ItemsSource = result.Customers;
                    });
                }
            }
    

        这样一个简单的用户查询就完成了,在windows phone下使用Beetle进行TCP通讯是不是很简单的事情:)

    如果你有需要可以到http://beetlesl.codeplex.com/ 获取相关代码

    访问Beetlex的Github
  • 相关阅读:
    将字符串指针ps1 和 ps2之间的内存拷贝出来
    wm_copydata不等返回值处理 SendMessage SendMessageTimeout
    成为编程高手的八大奥秘
    成功老板防骗反骗技巧
    创业者怎样掌握简便的创业机会
    爱过了,恨过了,在这里留下最想对他/她说的那句话!(转)
    创业者须知的8条创业逻辑
    超越无形, 做只“一天到晚会游的鱼”
    男性的12种健康食物!
    原始商人的深度思考(二)市场准入时机的把握
  • 原文地址:https://www.cnblogs.com/smark/p/2552440.html
Copyright © 2011-2022 走看看