[原创] Realtime库实际学习过程加所有模块心得(连载)

shilaike   2011-4-13 22:25 楼主
从今天开始,我觉得学一个东西,要有系统规划,学了一个东西要总结 ,然后将所以综合一下,做成一个项目,这样才叫学习致用,下面我会将学习TCP/IP(net)的过程心得上传,
里面全是本人一点一滴的学习过程,因为有前人的总结和引导,我今天学习起来更容易了,不过我将会将这块项目做得很完美的:请大家期待。。。。。。
以下内容均以RL实时库指导为基础。。。。。。
一.TCPNET的应用
1.TCPnet的概念
RLTCPnet非常适合小型客户使用,如嵌入式系统。它是TCP/IP协议栈的实现,该协议的主要目的减小内存的使用和代码的大小,也相当于一种代码和内存的优化协议了。
RL-TCPnet是适用于ARM7/9 CM3的体系结构的软件的一种底层实现部分。
2.TCPnet的组成部分
RL-TCPnet完全是由C代码构成的,编译环境必须是REALVIEW编译器,它是RL-ARM的一部分。RL-ARM是一个独立的产品,不包含在REALVIEW MDK-MICROCONTROLLER DEVELOPMENT KIT中。
3.TCP SOCKET
TCP协议运行平台是IP协议。TCP协议是一种面向连接的可靠的字节流服务
面向连接:两个应用程序使用TCP协议时,须在数据传输前建立TCP连接;
字节流服务:TCP是一个双工通信协议,每一个TCP连接支持一对字节流,收发双方各一个。
对于错误的处理机制:TCP对于每一个由错误没有到达目标文件的数据进行重传。如果数据坏了,它进行重发。
4.TCP 连接
RL-TCPnet的操作模式是C/S模式,TCP协议也是基于这个模式的。C/S都是通过打开操作来准备连接。
打开操作分为两种,
主动打开:客户机使用TCP,处理且通过发送TCP信息来启动并初始化连接(SYN信息);
被动打开:一个服务器进程使用TCP,使用一个更加宽松的方法。这个服务器除了指示服务进程外不做任何事,其实就是一个等等来自一特殊客户的主动打开。
5.TCP主动打开与被动打开
主动打开:
当连接一个远程server时,嵌入式应用程序使用TCP Active Open(如发邮件)。这种情况下,TCPNET系统是TCP连接的发起者。
打开活动的TCP连接步骤:
(1)在Net Config.c配置文件中打开TCP socket;
(2) 使用tcp_get_socket()得到一个空闲的tcp socket;
(3)调用 tcp_connect()函数初始化TCP连接。
被动打开:
运行服务器应用程序时TCP被以被动方式打开,如WEB浏览器。TCP SOCKET以被动方式打开,并等待输入连接 。
打开TCP连接步骤:
(1)同上(1);
(2)同上(2);
(3)利用tcp_listen()函数,允许TCP socket监听模式。
6.发送TCP数据
TCP协议不关心数据格式,只是简单的接收数据,将其压缩成TCP包,并发送给远程对等体。之后TCP Socket把最后的包保存在内存里,并等待远程对等体的响应回复。如果等待超时,则会重新发送此包,直到sorcket连接fail,或者包得到响应。内存中保存的是最后的发送包,这是为解决内存不足减小协议的实现占用率而设定的。当最后的发送包得到响应后,释放包所占的空间。
7.发送数据示例
下面我将给出一个仿写的例子说明的是使用TCP Socket发送大量数据的概念。该例子发送 64 Kbytes的数据 到远程 IP地址172.20.134.76(本机IP地址,哈哈,这个地址才能连网我就不想改动了),监听着端口 1000。当数据发送或连接关闭时,TCP Socket分配不变,也不释放。
。。。。由于关灯了,我马上回寝室了。例子已实现,明天将整理给出。
上面只是简单地说了一下学习的第一章的内容。。。。后续部分就会在连续的几天内发出。。

[ 本帖最后由 shilaike 于 2011-4-14 09:49 编辑 ]
只有想不到,没有做不到。

回复评论 (7)

感谢分享!
期待更加详细点,最好有教程
点赞  2011-4-14 08:28

回复 沙发 ddt0517 的帖子

上面只是一个引导小节,具体的内容我将在下面的几天时间内不断更新 。。。
敬请期待。。。。。。
只有想不到,没有做不到。
点赞  2011-4-14 08:51
谢谢楼主分享 楼主加油
加油!在电子行业默默贡献自己的力量!:)
点赞  2011-4-14 09:11
引用: 原帖由 shilaike 于 2011-4-13 22:25 发表
从今天开始,我觉得学一个东西,要有系统规划,学了一个东西要总结 ,然后将所以综合一下,做成一个项目,这样才叫学习致用,下面我会将学习TCP/IP(net)的过程心得上传,
里面全是本人一点一滴的学习过程,因为有前 ...

由于程序代码的多,所以下面介绍一下主要的几个函数:
init_TcpNet();这个函数的主要目的就是对TCPNET的系统资源,协议和应用程序,在启动程序时必须要调用这个函数
main_TcpNet();这个函数是TCPNET的主函数,主要负责下面三件事:
//1.协议超时设定
//2.ARP地址缓存
//3.轮洵以太网控制器来接收数据
tcp_get_socket();这个函数的参数很多,原型是:extern U8   tcp_get_socket (U8 type, U8 tos, U16 tout,U16 (*listener)(U8 socket, U8 event, U8 *buf, U16 len));
对于这个函数的介绍请点击下面的链接:https://home.eeworld.com.cn/my/space.php?uid=292785&do=thread&id=354
下面这个链接是关于tcp_connet(),tcp_listen(),tcp_release_socket()几个函数的详细说明:https://home.eeworld.com.cn/my/space.php?uid=292785&do=thread&id=355
只有想不到,没有做不到。
点赞  2011-4-14 11:15

下文呢?

怎么没有下文了?
点赞  2012-2-15 10:58

后面的呢

觉得很好,期待楼主继续更新
点赞  2012-10-15 14:51
楼主有没有做这个做一个服务器呢?
点赞  2015-2-6 15:05
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复