一种面向对象的TCP/IP中间件
这是一个使用C++封装的TCP/IP协议栈(仅传输层),属于本人所设计的中间件的一员,具有硬件无关,应用无关特性,使用非常方便,一看代码便知:
#include "net.h" // 包含这个net.h就可以使用所有TCP/IP中间件的以下4个功能 TcpClient tcpc1; // 定义一个TCP客户端,用于主动连接目标主机
TcpListener tcpl1; // 定义一个TCP服务端,用于侦听来自远程主机的连接
Socket socket1; // 定义一个符合Berkeley套接字标准的socket
UdpClient udp1; // 定义一个UDP客户端
// 测试TCP客户端
void TestTcpClient(void){
tcpc1.Init(“192.168.1.120”,); // 建立默认远程主机
tcpc1.Connect(); // 连接,任务将阻塞,连接成功或连接超时返回,.Connect(3000)表示3秒超时,无参数表示不超时
tcpc1.Send("Hello, TcpClient !\n");
tcp1.Close(); // 关闭连接
}
// 测试TCP服务端
void TestTcpListener(void){
int len;
byte rxbuf[];
tcpl1.Init(); // 将本程序表示为11000端口
tcpl1.Start(); // 开始异步侦听
while(true){
len = tcpl1.rxStream.GetNewLine(rxbuf,sizeof(rxbuf)); // 读数据,接收成功返回长度,否则返回0
if(len){
tcpl1.Send(“\n接收到:”)
tcpl1.Send(rxbuf,len); // 将接收到的数据发回
}
}
tcp1.Close(); // 关闭连接,示意性代码
}
// 测试socket
void TestSocket(void){
socket1.Init(SOCK_STREAM,); // 使用流协议,也可以使用数据报协议SOCK_DGRAM
socket1.Connect(“192.168.1.120”,);
socket1.Send("Hello, Socket !\n");
socket1.Close();
// 另外还有Bind与Listen函数可用于侦听连接
}
// 测试UDP
void TestUDP(void){
int len;
char* rxbuf;
EndPoint* remoteEP; // 用于存储远程地址
udp1.Init(); // 适用于接收
//udp1.Init(“192.168.1.120”,11001); // 适用于发送
udp1.ReceQueueInit(); // 初始化接收队列,1024字节,如果没有此句,一次只能接收一个包
// 如果使用接收队列,接收可在后台完成,前台慢慢处理,不丢包
udp1.Open(); // 打开端口 remoteEP = new EndPoint; // 使用动态分配,该动态内存分配算法是中间件的一部分
rxbuf = new char[];
while()
if(udp1.IsReceived()){
memset(rxbuf,,);
len = udp1.ReceiveFrom(rxbuf,,remoteEP);
if(len){
// 打印消息内容,长度,发送者IP地址,发送者端口
ComPrintf("msg = %s,len = %l,for:ip=%d.%d.%d.%d,port=%l\n",
rxbuf,
len,
remoteEP->Address.bytes[],
remoteEP->Address.bytes[],
remoteEP->Address.bytes[],
remoteEP->Address.bytes[],
remoteEP->Port);
}
}
}
delete remoteEP;
}
// 需要在第一个任务调用NetInit()函数即可启动网络服务
只需一个库文件与一个头文件以及一个硬件相关的驱动文件再加上一个配置文件即可使用,配置文件图形化操作:

这样项目就可以轻松使用网络连接功能了!
一种面向对象的TCP/IP中间件的更多相关文章
- 几种开放源码的TCP/IP协议栈比较
http://blog.chinaunix.net/uid-28785506-id-3828286.html 原文地址:几种开放源码的TCP/IP协议栈比较 作者:三点水兽 1.BSD TCP/IP协 ...
- 几种开源的TCP/IP协议栈分析
1:BSD TCP/IP协议栈,BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的.这是因为 BSD栈在BSD许可协议下提供了这些专业栈的 ...
- 【程序猿笔试面试复习】之中的一个 网络与通信篇(一) 几大网络模型:OSI、TCP/IP、B/S与C/S、MVC结构
9.1网络模型 9.1.1. OSI七层模型 OSI(Open System Interconnection,开放系统互联)七层网络模型称为开放式网络互联參考模型.其为国际标准组织指定的一个指导信息互 ...
- 图解TCP/IP→第2章基础知识
####TCP.IP背景**关键词:ARPANET,UNIX,分组交换技术,*ARPANET(阿帕网),也是全球互联网的鼻祖.阿帕网的成功也充分证明了基于分组交换技术的通信方法的可行性.*20世纪70 ...
- TCP/IP四层模型和OSI七层模型
TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对 ...
- TCP/IP, HTTP, socket
摘自:http://jingyan.baidu.com/article/08b6a591e07ecc14a80922f1.html http://goodcandle.cnblogs.com/arch ...
- Linux TCP/IP 协议栈之 Socket 的实现分析(一)
内核版本:2.6.37参考[作者:kendo的文章(基于内涵版本2.6.12)] 第一部份 Socket套接字的创建 socket 并不是 TCP/IP协议的一部份. 从广义上来讲,socket 是U ...
- 【TCP/IP 合约】 TCP/IP 基金会
总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后開始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...
- TCP/IP笔记(二)TCP/IP简介
上回,主要介绍了下协议和OSI参考模型,并简单了解下网络构成要素,这回该说说TCP/IP了 互联网与TCP/IP的关系 互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发 ...
随机推荐
- SQLSERVER聚集索引与非聚集索引的再次研究(下)
SQLSERVER聚集索引与非聚集索引的再次研究(下) 上篇主要说了聚集索引和简单介绍了一下非聚集索引,相信大家一定对聚集索引和非聚集索引开始有一点了解了. 这篇文章只是作为参考,里面的观点不一定正确 ...
- 谁是2016年的.NET开发者?
Nora Georgieva (http://www.telerik.com/blogs/infographic-the-dotnet-developer-of-2016) Whether you h ...
- Log4net入门(帮助类篇)
在前几篇Log4net入门文件的讲述过程中,我们在使用log4net的类中都要编写如下一行代码: private static log4net.ILog log = log4net.LogManage ...
- C#6新特性,让你的代码更干净
前言 前几天看一个朋友的博客时,看他用到了C#6的特性,而6出来这么长时间还没有正儿八经看过它,今儿专门看了下新特性,说白了也不过是语法糖而已.但是用起来确实能让你的代码更加干净些.Let's try ...
- Unity3D移动平台动态读取外部文件全解析
前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑 ...
- 用SignalR 2.0开发客服系统[系列2:实现聊天室]
前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...
- ASP.NET Core 中文文档 第二章 指南(2)用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API
原文:Building Your First Web API with ASP.NET Core MVC and Visual Studio 作者:Mike Wasson 和 Rick Anderso ...
- ASP.NET MVC5中的Model验证
Model验证是ASP.NET MVC中的重要部分,它主要用于判断输入的数据类型及值是否符合我们设定的规则,这篇文章就介绍下ASP.NET MVC中Model验证的几种方式. 后台验证 DataAnn ...
- 《HelloGitHub月刊》第06期
前言 <HelloGitHub>月刊做到第06期了(已经做了6个月了),在GitHub上获得了100+的stars,虽然不多,但是我很知足了,说明有人觉得这个项目是有价值的.同时园子中的' ...
- MAC终端命令行下用sublime、vscode、atom打开文件或目录
要知道,有时候一些小技巧,能极大的加大我们的工作效率. 在MAC下开发,用的最多的还是终端,我的终端环境是iterm2+ohmyzsh:步入正题前先给大家介绍几个小技巧: 第一个: 打开findle, ...