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)
上一篇:UDP数据报传输的软件设计