位置:51电子网 » 技术资料 » 嵌入式系统

TOP数据传输实现的软件设计

发布时间:2008/12/30 0:00:00 访问次数:409

  在tcp开发包中有很多文件,用户编写应用层软件时,建议建立maln.h和main.cpp作为应用层程序的 头文件和程序文件。同时为了使用tcp/ip的接口函数,需包含一些头文件和说明一些函数的定义。主要 的函数及其功能如下。

  (1)void tcplpprocess()

  在这个函数中将调用运行这个tcp/ip协议栈所需的所有进程,所以要求应用层反复地调用这个函数,这就相当于运行了所有进程。函数中进程调用顺序的安排是从上到下发送,然后从下 到上接收。

  (2)tcppeerclosing()

  在任何时候都可以调用这个函数来得到对方(peer)的状态,如果rap包或者arp包重发次数过多,则表 明对方断线;如果自己的tcp状态大于等于tcp-stateclosewait,则表明对方希望断开连接;如果用户 发现这种情况,则可以调用tcpclose函数也要求和对方断开连接。

  (3)tcpsocket()

  这个socket函数为连接分配必要的存储空间,这里主要是初始化队列。

  (4)tcpbind()

  用于初始化tcb中变量的值。设置本地端口,产生一个随机的初始序号。

  (5)tcpconnect(dword destip,word destport)

  用户调用这个函数和指定的ip、指定的端口建立连接。tcpconnect发送一个syn标志的rap包,然后等 待top连接的建立。需要注意的是,等待rap建立是在函数内部,此时tcplpprocess()函数没有被反复 调用,所以必须在函数中反复调用tcplpprocess()。调用以后tcp状态不再是closed状态,否则若接下 来发现tcp状态是closed状态,则会认为对方reset请求。然后或者连接建立,或者被对方reset(这可能 是由于对方没有在连接的端口监听)从而回到closed状态,或者对方处于断线状态。如果连接建立成功 则返回true。

  (6)tcpsend(byte *buff, word size)

  用户调用这个函数来发送一个数据包。它的功能是分配一个数据包,然后将这个包写入应用层输出队 列中。

  (7)void tcpclose()

  将主动发起关闭这个连接,或者发现对方发起关闭连接,于是己方调用tcpclose也发起关闭。函数的 开始是根据状态转化图做相应的处理和状态转化,然后是调用三个tcpipprocess()来保证在ip层或者 netlntef层的数据包都发送出去,否则程序退出,但是在tcp输出队列或者网络接口输出队列中可能还有 数据包没发送完而出错。另外,假如发现对方断线,则强硬退出。

  (8) void tcplisten()

  函数将top置于监听状态,监听的端口就是tcpbind绑定的端口。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



  在tcp开发包中有很多文件,用户编写应用层软件时,建议建立maln.h和main.cpp作为应用层程序的 头文件和程序文件。同时为了使用tcp/ip的接口函数,需包含一些头文件和说明一些函数的定义。主要 的函数及其功能如下。

  (1)void tcplpprocess()

  在这个函数中将调用运行这个tcp/ip协议栈所需的所有进程,所以要求应用层反复地调用这个函数,这就相当于运行了所有进程。函数中进程调用顺序的安排是从上到下发送,然后从下 到上接收。

  (2)tcppeerclosing()

  在任何时候都可以调用这个函数来得到对方(peer)的状态,如果rap包或者arp包重发次数过多,则表 明对方断线;如果自己的tcp状态大于等于tcp-stateclosewait,则表明对方希望断开连接;如果用户 发现这种情况,则可以调用tcpclose函数也要求和对方断开连接。

  (3)tcpsocket()

  这个socket函数为连接分配必要的存储空间,这里主要是初始化队列。

  (4)tcpbind()

  用于初始化tcb中变量的值。设置本地端口,产生一个随机的初始序号。

  (5)tcpconnect(dword destip,word destport)

  用户调用这个函数和指定的ip、指定的端口建立连接。tcpconnect发送一个syn标志的rap包,然后等 待top连接的建立。需要注意的是,等待rap建立是在函数内部,此时tcplpprocess()函数没有被反复 调用,所以必须在函数中反复调用tcplpprocess()。调用以后tcp状态不再是closed状态,否则若接下 来发现tcp状态是closed状态,则会认为对方reset请求。然后或者连接建立,或者被对方reset(这可能 是由于对方没有在连接的端口监听)从而回到closed状态,或者对方处于断线状态。如果连接建立成功 则返回true。

  (6)tcpsend(byte *buff, word size)

  用户调用这个函数来发送一个数据包。它的功能是分配一个数据包,然后将这个包写入应用层输出队 列中。

  (7)void tcpclose()

  将主动发起关闭这个连接,或者发现对方发起关闭连接,于是己方调用tcpclose也发起关闭。函数的 开始是根据状态转化图做相应的处理和状态转化,然后是调用三个tcpipprocess()来保证在ip层或者 netlntef层的数据包都发送出去,否则程序退出,但是在tcp输出队列或者网络接口输出队列中可能还有 数据包没发送完而出错。另外,假如发现对方断线,则强硬退出。

  (8) void tcplisten()

  函数将top置于监听状态,监听的端口就是tcpbind绑定的端口。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!