这是一个使用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. vue vue-cli安装

    npm 更新 cnpm install -g npm Vue 的基本用法 Vue 相比于 React 和 Angular 容易上手多了,因此我对 Vue 的学习主要以文档为主,视频为辅(只有像我这种菜 ...

  2. .NET Core 使用Dapper 操作MySQL

    MySQL官方驱动:http://www.cnblogs.com/linezero/p/5806814.html .NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使 ...

  3. WCF备忘录一:服务端实例的生命周期

    示例代码下载地址:WCFDemo1Day 概述 客户端向WCF服务发出请求后,服务端会实例化一个Service对象(实现了契约接口的对象)用来处理请求,实例化Service对象以及维护其生命周期的方式 ...

  4. dicom网络通讯入门(3)

    接下来可以进行消息传递了 ,也就是dimse ,再来复习下 什么是dimse .n-set  n-create c-echo 这些都是dimse  他们都是属于一种结构的pdu 那就是tf-pdu(传 ...

  5. 在web浏览器上显示室内温度(nodeJs+arduino+socket.io)

    上次的nodejs操作arduino入门篇中实现了如何连接arduino.这次我们来实现通过arduino测量室内温度并在浏览器上显示出来. [所需材料] 硬件:LM35温度传感器,arduino u ...

  6. js给DropdownList赋值

    ", "model": "APOLLO M/B1"}]; ; i < row.length; i++) { var addOption = do ...

  7. svn 提交代码报错

    svn 提交代码报错 最近新安装了TortoiseSvn 1.92,在上传代码,其中有新增加的文件,出现如下错误: 解决方法: 1.用vs生成patch文件 2.生成的patch文件中讲nonexis ...

  8. PHP基础知识第一趴

    今天来贴一贴我的一张部分php基础知识的思维导图.未完,待续......慢慢'补枪'(为了让引号内的期望输出内容<strong>变成</strong>现实,应该使用双引号?那就 ...

  9. yii框架安装心得

    最近在学习yii框架, 现在将遇到的一些问题和解决方法写出来与大家分享. yii框架的安装: 下载yii框架之后, 打开文件运行init.bat文件, 如果闪退就打开php的扩展(php_openss ...

  10. Qt信号与槽自动关联机制

    参考链接1:http://blog.csdn.net/skyhawk452/article/details/6121407 参考链接2:http://blog.csdn.net/memory_exce ...