这是一个使用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中间件的更多相关文章

  1. 几种开放源码的TCP/IP协议栈比较

    http://blog.chinaunix.net/uid-28785506-id-3828286.html 原文地址:几种开放源码的TCP/IP协议栈比较 作者:三点水兽 1.BSD TCP/IP协 ...

  2. 几种开源的TCP/IP协议栈分析

    1:BSD TCP/IP协议栈,BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的.这是因为 BSD栈在BSD许可协议下提供了这些专业栈的 ...

  3. 【程序猿笔试面试复习】之中的一个 网络与通信篇(一) 几大网络模型:OSI、TCP/IP、B/S与C/S、MVC结构

    9.1网络模型 9.1.1. OSI七层模型 OSI(Open System Interconnection,开放系统互联)七层网络模型称为开放式网络互联參考模型.其为国际标准组织指定的一个指导信息互 ...

  4. 图解TCP/IP→第2章基础知识

    ####TCP.IP背景**关键词:ARPANET,UNIX,分组交换技术,*ARPANET(阿帕网),也是全球互联网的鼻祖.阿帕网的成功也充分证明了基于分组交换技术的通信方法的可行性.*20世纪70 ...

  5. TCP/IP四层模型和OSI七层模型

    TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对 ...

  6. TCP/IP, HTTP, socket

    摘自:http://jingyan.baidu.com/article/08b6a591e07ecc14a80922f1.html http://goodcandle.cnblogs.com/arch ...

  7. Linux TCP/IP 协议栈之 Socket 的实现分析(一)

    内核版本:2.6.37参考[作者:kendo的文章(基于内涵版本2.6.12)] 第一部份 Socket套接字的创建 socket 并不是 TCP/IP协议的一部份. 从广义上来讲,socket 是U ...

  8. 【TCP/IP 合约】 TCP/IP 基金会

    总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后開始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...

  9. TCP/IP笔记(二)TCP/IP简介

    上回,主要介绍了下协议和OSI参考模型,并简单了解下网络构成要素,这回该说说TCP/IP了 互联网与TCP/IP的关系   互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发 ...

随机推荐

  1. img.width一直是0的问题--记录(二)

    var img=new Image(); img.src="图片路径"; 然后调用 img.width img.height 你会发现值是0: 这是因为页面在加载的时候图片是最后的 ...

  2. 【原】SDWebImage源码阅读(四)

    [原]SDWebImage源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 SDWebImage中主要实现了NSURLConnectionDataDelega ...

  3. 8.SVM用于多分类

    从前面SVM学习中可以看出来,SVM是一种典型的两类分类器.而现实中要解决的问题,往往是多类的问题.如何由两类分类器得到多类分类器,就是一个值得研究的问题. 以文本分类为例,现成的方法有很多,其中一劳 ...

  4. 计算机程序的思维逻辑 (46) - 剖析PriorityQueue

    上节介绍了堆的基本概念和算法,本节我们来探讨堆在Java中的具体实现类 - PriorityQueue. 我们先从基本概念谈起,然后介绍其用法,接着分析实现代码,最后总结分析其特点. 基本概念 顾名思 ...

  5. ZKWeb网站框架的动态编译的实现原理

    ZKWeb网站框架是一个自主开发的网页框架,实现了动态插件和自动编译功能. ZKWeb把一个文件夹当成是一个插件,无需使用csproj或xproj等形式的项目文件管理,并且支持修改插件代码后自动重新编 ...

  6. 类型基础---CLR Via C#笔记一

    一.所有类型都是从System.Obejct派生 1.下面两个类型定义是完全一致的: class Employee{ ... } class Employee:System.Object{ ... } ...

  7. 【原创】如何确定Kafka的分区数、key和consumer线程数

    在Kafak中国社区的qq群中,这个问题被提及的比例是相当高的,这也是Kafka用户最常碰到的问题之一.本文结合Kafka源码试图对该问题相关的因素进行探讨.希望对大家有所帮助.   怎么确定分区数? ...

  8. Win10 UWP开发系列:实现Master/Detail布局

    在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...

  9. c#中get set 的使用

    在早期学习c#的过程中,经常遇到这样的语句: public string StudentName { get{return stuName;} set{stuName=value;} } 当时也不是很 ...

  10. JavaWeb_day06_Filter过滤器

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day06 request 对象常用方法 respon ...