这是一个使用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. WCF学习之旅—基于Fault Contract 的异常处理(十八)

       WCF学习之旅—WCF中传统的异常处理(十六) WCF学习之旅—基于ServiceDebug的异常处理(十七) 三.基于Fault Contract 的异常处理 第二个示例是通过定制Servic ...

  2. c#官方推荐md5通用加密类

    /// <summary> /// MD5加密 /// </summary> /// <param name="input">需要加密的字符串& ...

  3. Oracle数据库文件路径变更

    环境:RHEL 6.4 + Oracle 11.2.0.3 情景一:只是部分普通数据文件迁移,可以在线操作. 1.将对应表空间offline,移动数据文件到新路径 2.数据文件alter databa ...

  4. 使用backbone的history管理SPA应用的url

    本文介绍如何使用backbone的history模块实现SPA应用里面的URL管理.SPA应用的核心在于使用无刷新的方式更改url,从而引发页面内容的改变.从实现上来看,url的管理和页面内容的管理是 ...

  5. 利用KD树进行异常检测

    软件安全课程的一次实验,整理之后发出来共享. 什么是KD树 要说KD树,我们得先说一下什么是KNN算法. KNN是k-NearestNeighbor的简称,原理很简单:当你有一堆已经标注好的数据时,你 ...

  6. iOS-多线程介绍

    一.前言部分 最近在面试,重新温习了一遍多线程,希望加深一遍对于多线程的理解. 1.什么是进程? 1).要了解线程我们必须先了解进程,通俗来讲进程就是在系统中运行的一个应用程序. 2).每个线程之间是 ...

  7. springmvc<一>一种资源返回多种形式【ContentNegotiatingViewResolver】

    restful服务中一个重要的特性就是一种资源可以有多种表现形式,在springmvc中可以使用ContentNegotiatingViewResolver这个视图解析器来实现这种方式. 描述资源的三 ...

  8. extend

    这段时间在写一个预览图片的插件, 被我老大说了无数次了,不多说啥,说多了都是泪 昨天看着我的代码他说你用了extend,那你知道是什么意思吗 我只知道是扩展的意思,瞬间觉得自己弱爆了 真的 然后今天看 ...

  9. css单行文本与多行溢出文本的省略号问题

    在文字布局和代码编写过程中遇到文本溢出是常有的事,下面总结一下对于单行文本溢出和多行文本溢出省略号的处理. 一.单行文本省略号 <p class="text1"> 这是 ...

  10. script在html中的摆放位置

    以前一直觉得script在html中的任何位置都可以,今天做一个需求的时候才更正了自己的错误思想啊--script的位置也不是随便放的. 首先是想实现一个select标签,有是和无两个option,但 ...