演示NetworkComms V3的用法

例子很简单 界面如下:

服务器端代码:

开始监听:

 //服务器开始监听客户端的请求
            Connection.StartListening(ConnectionType.TCP, new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text)));
            button1.Text = "监听中";
            button1.Enabled = false;

            //此方法中包含服务器具体的处理方法。
            StartListening();
  private void StartListening()
        {
            //开启日志记录
            //配置日志记录器
            //ILogger logger = new LiteLogger(LiteLogger.LogMode.ConsoleAndLogFile, "ServerLogFile_" + NetworkComms.NetworkIdentifier + ".txt");
            //NetworkComms.EnableLogging(logger);

            //禁用日志记录  服务器端正式使用时,赢禁用日志记录
            NetworkComms.DisableLogging();

            //服务器端处理收到的消息
            //为简单起见,此示例中我们只处理字符类型的信息,也返回字符类型的信息。
            //处理的信息可以使自定义类,具体见下一个Demo
            NetworkComms.AppendGlobalIncomingPacketHandler<LoginContract>("ReqLogin", IncomingLoginRequest);

        }
  //处理某个具体的请求
        private void IncomingLoginRequest(PacketHeader header, Connection connection, LoginContract loginContract)
        {
            try
            {
                string resMsg="";

                //为了简单,这里不调用数据库,而是模拟一下登录
                ")

                    resMsg = "登录成功";

                else

                    resMsg = "用户名密码错误";
                //把返回结果写入到契约类中,后面返回给客户端
                ResMsgContract contract = new ResMsgContract();
                contract.Message = resMsg;

                connection.SendObject<ResMsgContract>("ResLogin", contract);
            }
            catch (Exception ex)
            {
                LogTools.LogException(ex, "IncomingMsgHandle");
            }
        }

使用protobuf.net 进行序列化

契约类:

using System;
using System.Collections.Generic;
using System.Text;
using ProtoBuf;

namespace MessageContract
{ 

    [ProtoContract]
    public class LoginContract
    {
        [ProtoMember()]
        public string UserID { get; set; }

        [ProtoMember()]
        public string PassWord { get; set; }

        public LoginContract() { }

        public LoginContract(string userID, string passWord)
        {
            this.UserID = userID;
            this.PassWord = passWord;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;
using ProtoBuf; 

namespace MessageContract
{
    //操作结果的返回信息,可通用
    [ProtoContract]
    public class ResMsgContract
    {

        [ProtoMember()]
        public string Message;

        public ResMsgContract() { }

        public ResMsgContract(string message)
        {
            this.Message = message;
        }
    }
}

客户端代码:

//连接信息对象
        public ConnectionInfo connInfo = null;
        //连接对象
        Connection newTcpConnection;

连接服务器:

private void button1_Click(object sender, EventArgs e)
        {
            //给连接信息对象赋值
            connInfo = new ConnectionInfo(txtIP.Text, int.Parse(txtPort.Text));

            //如果不成功,会弹出异常信息
            newTcpConnection = TCPConnection.GetConnection(connInfo);

            button1.Enabled = false;
            button1.Text = "连接成功";
        }

模拟登陆:

 private void button2_Click(object sender, EventArgs e)
        {
            //给契约类赋值
            LoginContract contract = new LoginContract();
            contract.UserID = txtUserName.Text;
            contract.PassWord = txtPassword.Text;
            //向服务器发送登录信息并获取登录结果
            ResMsgContract resMsg = newTcpConnection.SendReceiveObject<LoginContract, ResMsgContract>(, contract);

            if (resMsg.Message == "登录成功")
            {
                MessageBox.Show("登录成功");

            }
            else
            {
                MessageBox.Show("用户名密码错误");
            }

        }

原网址:http://www.networkcomms.cn/Article/ViewArticle.aspx?ItemID=27828&PageID=1224

www.networkcomms.cn编辑

NetworkComms V3 模拟登陆的更多相关文章

  1. python 模拟登陆,请求包含cookie信息

    需求: 1.通过GET方法,访问URL地址一,传入cookie参数 2.根据地址一返回的uuid,通过POST方法,传入cooki参数 实现思路: 1.理解http的GET和POST差别 (网上有很多 ...

  2. Scrapy 模拟登陆知乎--抓取热点话题

    工具准备 在开始之前,请确保 scrpay 正确安装,手头有一款简洁而强大的浏览器, 若是你有使用 postman 那就更好了.           Python   1 scrapy genspid ...

  3. 使用selenium模拟登陆新浪微博

    1.selenium基本使用 1.selenium安装及基本操作 selenium是一个自动化测试工具,它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面浏览器驱动,也包括Ph ...

  4. Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  5. Python模拟登陆新浪微博

    上篇介绍了新浪微博的登陆过程,这节使用Python编写一个模拟登陆的程序.讲解与程序如下: 1.主函数(WeiboMain.py): import urllib2 import cookielib i ...

  6. PHP 之 CURL 模拟登陆并获取数据

    1.CURL模拟登陆的流程和步骤 2.tempnam 创建一个临时文件 3.使用CURL模拟登陆到PHP100论坛 <?php $cookie_file = tempnam('./temp',' ...

  7. NetworkComms V3 使用Json序列化器进行网络通信

    刚才在网上闲逛,偶然看到一篇文章 C#(服务器)与Java(客户端)通过Socket传递对象 网址是:http://www.cnblogs.com/iyangyuan/archive/2012/12/ ...

  8. pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量

    闲来无事,由于校园内网络是限流量的,查询流量很是频繁,于是萌生了写一个本地脚本进行一键查询自己的剩余流量. 整个部分可以分为三个过程进行: 对登陆时http协议进行分析 利用python进行相关的模拟 ...

  9. python模拟登陆知乎并爬取数据

    一些废话 看了一眼上一篇日志的时间 已然是5个月前的事情了 不禁感叹光阴荏苒其实就是我懒 几周前心血来潮想到用爬虫爬些东西 于是先后先重写了以前写过的求绩点代码 爬了草榴贴图,妹子图网,后来想爬婚恋网 ...

随机推荐

  1. python中文乱码问题

    在学习python的时候,当我要print中文的时候,会出现以下提示: py = '你好,世界!'print py File "n2.py", line 1 SyntaxError ...

  2. Corn Fields——POJ3254状态压缩Dp

    Corn Fields Time Limit: 2000MS Memory Limit: 65536K Description Farmer John has purchased a lush new ...

  3. https 单向认证和双向认证配置

    HTTPS 是我们开发中经常用到的通信加密技术,能有效保护我们网络访问中的安全,本文主要讲解单向 和 双向 https 的配置.关于https 的实现原理在这里我就不赘述了,附上阮一峰老师的关于htt ...

  4. 使用PHP QR Code生成二维码

    使用PHP QR Code生成二维码   HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址: http://phpqrcode.so ...

  5. mysql的分区和分表

    分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中. mysql支持的分区类型包括Range.List.Hash.Key,其中Range比较常用: RANGE分区:基于属于一个给定连续区 ...

  6. linkedin开源的kafka-monitor安装文档

    linkedin开源的kafka-monitor安装文档 linkedin 开源的kafka-monitor的安装使用可以参考官方的readme:流程介绍的已经比较清楚,但是还是有一些地方需要修正.让 ...

  7. 使用rem来开发你的移动端网站

    what is rem ? )css3中的计量元素大小的单位,类似px.pt.em. )一种相对根元素font-size的计算方式.1rem = <html>'s font-size px ...

  8. .net连接DB2的异常SQL0666 - SQL query exceeds specified time limit or storage limit.错误处理

    SQL0666 - SQL query exceeds specified time limit or storage limit. 原因:查询超时 解决办法: set the DbCommand.C ...

  9. sublime必备插件

    安装插件 安装插件时,先使用Ctrl+Shift+P(Tools→Command Palette...)打开控制面板,输入PackageControl  回车  显示. 选择Package Contr ...

  10. iOS 开发之使用safari对webview进行调试

    转自:http://www.tuicool.com/articles/ZBFnUbz 使用safari对webview进行调试 时间 2016-02-25 14:35:20  陈斌彬的技术博客 原文  ...