介绍开源的.net通信框架NetworkComms框架之二 传递类
原文网址: http://www.cnblogs.com/csdev
Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地址是:https://github.com/MarcFletcher/NetworkComms.Net
使用networkcomms框架通信时,客户端发送消息,服务器端回复消息。
在介绍开源的.net通信框架NetworkComms 一文中,我们介绍了如何从客户端发送字符串给服务器端,以及如何从服务器端接收发回来的字符串。
本文介绍一下,如何发送自定义的类数据给服务器端,和如何获取从服务端返回的数据。
新建一个类库


添加对Protobuf.dll的引用,这个文件中在MarcF-networkcomms.net-8e01e19f827f\packages\protobuf-net.2.0.0.668\lib相关文件夹中
添加这个引用,是因为通信时,使用了Protobuf进行序列化

添加2个可以序列化的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProtoBuf;
namespace Demo1.Business
{
[ProtoContract]
public class ResMessage
{
public ResMessage()
{ }
[ProtoMember()]
public string Message { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProtoBuf;
namespace Demo1.Business
{
[ProtoContract]
public class User
{
public User()
{ }
[ProtoMember()]
public string UserID { get; set; }
[ProtoMember()]
public string Name { get; set; }
}
}
在Demo1.Client 和Demo1.Server中添加对Demo1.Business类的引用

客户端:

客户端代码:
User theUser = new User();
theUser.UserID = txtName.Text.Trim();
theUser.Name = txtPsw.Text.Trim();
ResMessage res = newTcpConnection.SendReceiveObject<User, ResMessage>(, theUser);
if (res.Message == "验证成功")
{
MessageBox.Show("用户验证成功");
}
else
{
MessageBox.Show(res.Message);
}
服务器端代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using NetworkCommsDotNet.Connections;
using NetworkCommsDotNet;
using NetworkCommsDotNet.DPSBase;
using NetworkCommsDotNet.Tools;
using NetworkCommsDotNet.Connections.TCP;
using System.Net;
using Demo1.Business;
namespace Demo1.Server
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//IP地址和端口
IPEndPoint thePoint = new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text));
//开始监听此IP和端口 使用TCP协议
Connection.StartListening(ConnectionType.TCP, thePoint);
NetworkComms.AppendGlobalIncomingPacketHandler<string>("GetName", IncomingMsgHandle);
NetworkComms.AppendGlobalIncomingPacketHandler<User>("UserLong", IncoingHandleLogin);
button1.Text = "已经开始监听";
}
private void IncomingMsgHandle(PacketHeader header, Connection connection, string msg)
{
try
{
string resMsg = "";
if (msg == "星期一")
resMsg = "Monday";
else if (msg == "星期二")
resMsg = "Tuesday";
else if (msg == "星期三")
resMsg = "Wednesday";
else if (msg == "星期四")
resMsg = "Thursday";
else if (msg == "星期五")
resMsg = "Friday";
else if (msg == "星期六")
resMsg = "Saturday";
else if (msg == "星期日")
resMsg = "Sunday";
connection.SendObject("ResName", resMsg);
}
catch (Exception ex)
{
}
}
private void IncoingHandleLogin(PacketHeader header, Connection connection, User theUser)
{
ResMessage msg=new ResMessage ();
" && theUser.Name == "张三")
msg.Message = "登录成功";
else
msg.Message = "用户不存在";
connection.SendObject("ResLogin", msg);
}
}
}


这样使用protobuf进行序列化的通信就完成了。因为neworkcomms默认使用protobuf进行通信,所以其他无需额外设置。如果使用其他序列化器,也可以很方便的设置。
原文地址 www.cnblogs.com/csdev
源码:http://pan.baidu.com/s/1dFNrMtN
介绍开源的.net通信框架NetworkComms框架之二 传递类的更多相关文章
- 介绍开源的.net通信框架NetworkComms框架 源码分析
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 售价249英镑 我曾经花了 ...
- 介绍开源的.net通信框架NetworkComms框架之四 消息边界
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(十八 ) ConnectionListenerBase
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(九) IPConnection
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(三)PacketHeader
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架之一 首字节验证
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地 ...
- 介绍开源的.net通信框架NetworkComms框架之五 心跳检测
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架之九 合并DLL
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms
Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地址是:https://github.com/MarcFletcher/ ...
随机推荐
- bootstrap入门-1.可视化布局
下载地址:http://v3.bootcss.com/getting-started/#download HTML模板: <!DOCTYPE html> <html> &l ...
- 拼linq 时网上整理的一个类
public static class DynamicLinqExpressions { public static Expression<Func<T, bool>> Tru ...
- JQuery MultiSelect(左右选择框)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- boost源码剖析----boost::any
boost源码剖析----boost::any 有的时候我们需要有一个万能类型来进行一些操作,这时候boost::any就派上用场了. boost::Any testInt(10); int val ...
- redis windows下的环境搭建
先说下安装吧!感觉这东西跟mongodb差不多,安装和布置挺简单,下载地址:https://github.com/dmajkic/redis/downloads 下载下来的包里有两个,一个是32位的, ...
- asp.net 验证正则表达式
基本元字符: . 任意的一个非换行字符 [] 集合匹配,匹配一个[]中出现的字符. 是在多个字符中取一个. () 调整优先级的作用. 还有一个分组的作用 | 或的意思,测试|一下. 注意,或的优先级最 ...
- JSTL函数
JSTL包含了一系列标准函数. 引入:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functi ...
- SQL Server 2008教程和Microsoft® SQL Server® 2008 R2 SP2 - Express Edition下载
教程 SQL Server 2008 Tutorialhttp://www.quackit.com/sql_server/sql_server_2008/tutorial/ 数据库下载 Microso ...
- fidder 使用教程
fidder 使用教程 1. Fiddler 是什么? Fiddler是用C#编写的一个免费的HTTP/HTTPS网络调试器.英语中Fiddler是小提琴的意思,Fiddler Web Debugge ...
- 【转】ini载入保存类,操作INI配置文件方便的很
/****************************************************************** * * ^_^ 恶猫 独门商标 挖哈哈 * * QQ:\> ...