NetworkComms V3 使用TCP通信传递IList<T>类型的数据
客户端从服务器获取一组IList<T>类型的数据非常常见(通常从数据库中获取)
我们用NeworkComms V3来演示一下(NetworkcommsV2.x版本也同样支持)
[ 使用protobuf.net序列化器]
第一步创建相关的工程文件:

MessageContract中的 User类为契约类,使用protobuf.net进行序列化
写法如下:
using System;
using System.Collections.Generic;
using System.Text;
using ProtoBuf;
namespace MessageContract
{
    [ProtoContract]
    public class User
    {
        private string userID = string.Empty;
        private string name = string.Empty; 
        public User()
        { }
        [ProtoMember()]
        public string UserID
        {
            get { return userID; }
            set { userID = value; }
        }
        [ProtoMember()]
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }
}
服务器端程序:
1、开始监听
 //服务器开始监听客户端的请求
            //开始监听某端口
            Connection.StartListening(ConnectionType.TCP, new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text)));
            button1.Text = "监听中";
2、注册相应的处理器
NetworkComms.AppendGlobalIncomingPacketHandler<string>("ReqUsers", IncomingReqUsersHandle);
3、处理方法
  private void IncomingReqUsersHandle(PacketHeader header, Connection connection, string  msg)
        {
            try
            {
                //模拟一些数据  返回给客户端
                IList<User> users = new List<User>();
                User user1=new User ();
                user1.Name="名山大川";
                user1.UserID=";
                User user2=new User ();
                user2.Name="日月江河";
                user2.UserID=";
                users.Add(user1);
                users.Add(user2);
                connection.SendObject("ResUsers", users);
            }
            catch (Exception ex)
            {
                LogTools.LogException(ex, "IncomingMsgHandle");
            }
        }
客户端代码:
1、连接服务器
  connInfo = new ConnectionInfo(txtIP.Text, int.Parse(txtPort.Text));
            //如果不成功,会弹出异常信息
            newTcpConnection = TCPConnection.GetConnection(connInfo);
2、点击下图中的按钮,获取数据

 private void button3_Click(object sender, EventArgs e)
        {
            IList<User> resMsg = newTcpConnection.SendReceiveObject<, "Test");
            listBox2.DataSource = resMsg;
            listBox2.DisplayMember = "name";
            listBox2.ValueMember = "name";
        }
效果图如下:

www.networkcomms.cn编辑
相关的文章:
客户端通过TCP通信分页从服务器获取数据
NetworkComms V3 使用TCP通信传递IList<T>类型的数据的更多相关文章
- python--教你做个最简单的tcp通信。。
		TCP协议:建立在IP协议之上的,TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由I ... 
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
		1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ... 
- NetworkComms V3 之支持TCP连接和UDP连接
		NetworkComms V3 无缝的支持TCP连接和UDP连接. 您可以很容易的创建这两种连接 //创建一个连接信息对象 ConnectionInfo connInfo = ); //创建一个TCP ... 
- NetworkComms V3 使用Json序列化器进行网络通信
		刚才在网上闲逛,偶然看到一篇文章 C#(服务器)与Java(客户端)通过Socket传递对象 网址是:http://www.cnblogs.com/iyangyuan/archive/2012/12/ ... 
- NetworkComms V3 之同步收发数据
		NetworkComms网络通信框架序言 NetworkComms通信框架,是一款来自英国的c#语言编写的通信框架,历时6年研发,成熟稳定,性能可靠. NetworkComms v3的核心功能在一定程 ... 
- TCP通信中的大文件传送
		TCP通信中的大文件传送 源码 (为节省空间,不包含通信框架源码,通信框架源码请另行下载) 文件传送在TCP通信中是经常用到的,本文针对文件传送进行探讨 经过测试,可以发送比较大的文件,比如1个G ... 
- 客户端程序通过TCP通信传送"小文件"到服务器
		客户端程序通过TCP通信传送"小文件"到服务器 [c#源码分享]客户端程序通过TCP通信传送"小文件"到服务器 源码 (不包含通信框架源码,通信框架源码请另行 ... 
- [c#源码分享]TCP通信中的大文件传送
		NetworkComms网络通信框架序言 源码 (为节省空间,不包含通信框架源码,通信框架源码请另行下载) 文件传送在TCP通信中是经常用到的,本文针对文件传送进行探讨 经过测试,可以发送比较大的 ... 
- NetworkComms V3   模拟登陆
		演示NetworkComms V3的用法 例子很简单 界面如下: 服务器端代码: 开始监听: //服务器开始监听客户端的请求 Connection.StartListening(ConnectionT ... 
随机推荐
- Mac 快捷键
			总结一下: Ctrl + 关机:弹出关机提示 Ctrl + Opt + 关机 : 正常关机快捷键 Cmd + Opt + 关机 :休眠 Ctrl + Cmd + 关机:重启 Shift + Ctrl ... 
- tinkphp验证码的使用
			页面显示验证码: <div class="input-group has-feedback "> <input id="yzm" type=& ... 
- MySQL显示中文
			http://www.cnblogs.com/livingintruth/p/3433259.html 这两天在学习webpy,把webpy的一个blog例子扒下来学习一下,默认创建的table当存入 ... 
- angularJS: shop chart
			<!DOCTYPE html> <html ng-app="app"> <head> <meta charset=" ... 
- hibernate联合主键 注解方式
			转载自https://my.oschina.net/yotoo/blog/265571 方法一:主键类用@Embeddable,pojo类仍然用@Entity但是引用主键类的对象用@Id 主键pojo ... 
- ubuntu gtk2.0 一个简单完整的窗口
			//gtk_main();开了线程,关闭窗口并不能退出程序,需要手动添加 //gtk2.0,window quit compelete example #include <gtk/gtk.h&g ... 
- Dreamweaver架设网站终极教程
			转自:http://www.cnblogs.com/loveme513/archive/2006/04/03/365969.html 一.定义站点 1. 在任意一个根目录下创建好一个文件夹(我们这里假 ... 
- Oracle建表
			1.oracle数据库中的多种数据结构: 1.表结构 存储数据 2.视图 一张表或多张表中数据的字节 3.sequence 主要用来生成主键值 4.index 提高检索性能 我们 ... 
- DP4J -- mnist
			标签(空格分隔): DeepLearning mnist mnist是一个数据集,其中包含很多手写数字的图片,每张图片都已经打上了label: Deep Learning 传统的机器学习神经网络由一层 ... 
- VMware Ubuntu Kaldi
			1.VMware10.0 秘钥网上搜就好了 2.ubuntu12.04 (1)安了几次14.04,16.04,12.04,最后窗口和分辨率的bug 还是没有解决 (2)终端显示菱形乱码的解决:直接用英 ... 
