这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 综合技术» 基础知识» ZLG,TCP,IP 我们想用ZLG的TCP/IP模块,可不知稳定性如何?

共2条 1/1 1 跳转至

ZLG,TCP,IP 我们想用ZLG的TCP/IP模块,可不知稳定性如何?

院士
2006-09-17 18:14:16 打赏
ZLG,TCP,IP 我们想用ZLG的TCP/IP模块,可不知稳定性如何?



关键词: 我们 想用 模块 不知 稳定性 如何

院士
2006-12-22 22:43:00 打赏
2楼
问 不知内部的东东是自己写的,还是philips或其它公司的. 1: 很多东西要自己修改,看你产品的等级程序。我修改了一个多月才算好用一点 2: 是这样吗我也想用,还想靠它实现SNMP,就是不知从何下手,请各位指点! 3: 我诚心诚意的推荐zlip虽然流控制还是不完整,但整体结构和性能要好很多,而且移植比较简单,如果你不是很苛求性能的话 4: 我也改了好久...还是不好用...性能上始终不能满足要求 5: 很多是边边角角的问题,只有使用过程中才会慢慢发现。 6: 看来还是用linux ARM会更好有完整的tcp/ip协议,成本就得200-300,批量大还可以。 7: 有的协议栈还不错的占资源也小 8: to eleven11zlip连udp都不支持,怎么用呀 9: 完全是我们自己写的,而且已经有几万个产品的实用案例! 当然,学习开发套件的版本是最初级的,如果有一定的基础是可以通过适当的修改使用的。如果需要稳定的商业化版本,我们不提供任何形式的代码,甚至包括OBJ文件,因为很少有人尊重厂商的知识产权,所以我们不对外销售源代码,但是可以购买我们公司的TC/ IP转换器系列产品,或者购买我们即将推出的 ARM嵌入式工控模块,一些模块是内嵌了 TCP/ IP软件代码的,虽然已经加密,但是完全供用户二次开发调用。
10: to yutu2UDP协议是很简单的,因为只是添加报头转到 IP层发送出去,我这里有示范性的代码,你可以看看,协议栈一旦有了完整的网络协议会提供免费版本的

void UDPRecv(MEM_ PCBXDATA *pMem, BYTE NetIfNo) REENTRANT
{
UDP_SOCKET XDATA *pUCB;
UDP_HEAD XDATA *pUdpHead = (UDP_HEAD XDATA *)(p IPHead + IPHeadLen);//计算UDP首地址
#ifdef Little_End
WORD UdpTotalLen = ntohs(pUdpHead->UDPTotalLen);//计算UDP总长度
#else
WORD UdpTotalLen = pUdpHead->UDPTotalLen;
#endif

#if UDP_CHECKSUM_EN == 1
if ( TCP_UDPCheckSum(p IPHead, UdpTotalLen) != 0)//UDP效验
{
MemFree(pMem);
return;
}
#endif

if (pUCBList != NULL)//若UDPsocket链表不为0
{
pUCB = pUCBList;//搜索链表,找对应socket
do
{
if (pUCB->Remote IP== p IPHead->Sour IP)
if (pUCB->Sin IP== p IPHead->Dist IP)
if (pUCB->RemotePort == pUdpHead->SourPort)
if (pUCB->SinPort == pUdpHead->DistPort)
{
pUCBList = pUCB;
goto UDP_Process;
}
pUCB = pUCB->pNext;
}
while (pUCB != pUCBList);
}

ICMPUnarrival(pMem, ICMP_CODE_PORT_UNARRIVAL);//若未找到,返回icmp
MemFree(pMem);
return;

UDP_Process://UDP进程,根据端口号分支
switch (pUdpHead->SourPort)
{
case DHCP_CLIENT_PORT://DHCP
break;
case DHCP_SERVES_PORT://DHCP
break;
default:
pUCB->UDPDataRecv((BYTE XDATA *)pUdpHead + UDP_HEAD_LEN, UdpTotalLen - UDP_HEAD_LEN);//无特点含义端口的数据接收
break;
}
MemFree(pMem); //释放内存块
}

void UDPSend(MEM_ PCBXDATA *pMem, UDP_SOCKET XDATA *pUCB) REENTRANT
{
UDP_HEAD XDATA *pUdpHead;

pMem->UsedSize += UDP_HEAD_LEN;//添加要发送的数据数目
//以下添加UDP报头
pUdpHead = (UDP_HEAD XDATA *)(POINT_ IP(pMem->MemAddr) + IP_MIN_HEAD_LEN);
pUdpHead->CheckSum = 0;
#ifdef Little_End
pUdpHead->SourPort = ntohs(pUCB->SinPort);
pUdpHead->DistPort = ntohs(pUCB->RemotePort);
pUdpHead->UDPTotalLen = ntohs(pMem->UsedSize);
pUdpHead->CheckSum = ntohs( TCP_UDPCheckSum(p IPHead, pMem->UsedSize));
#else
pUdpHead->SourPort = pUCB->SinPort;
pUdpHead->DistPort = pUCB->RemotePort;
pUdpHead->UDPTotalLen = pMem->UsedSize;
pUdpHead->CheckSum = TCP_UDPCheckSum(p IPHead, pMem->UsedSize);
#endif

IPSend(pMem, pUCB->Remote IP, IP_PCOL_UDP);//转到 IP层发送
} 11: 谢谢eleven11你用过SNMP协议吗,能不能指导我一下,谢谢! 12: 我花了很大的时间完善zlip现在已经移植到 ARM7上了,在修改原来的代码基础上加了udp嵌套口,加上了ping ,加上了基于udp的dgcp,telnet,加上了http服务器,以及cgi程序。还有smtp和pop3协议,完全可以收发电子邮件了。我看了周立功的以太网络产品,上面的功能我都分析了,可以实现了。
其实tcp/ip协议没有什么神秘的,有了很好的c语言基础,再分析一下网络协议,最好是查看对应的rfc文档,然后在下栽一个监视软件,花点时间就可以搞定。

提醒想要一直zlip的朋友:
1,注意ads中指针类型的指定。
2,注意前后台程序中后台程序的循环查询等待,要修改。
3,多处htons,htonl的错误,希望有耐心去调试。
4,不修改协议的时候,发送tcp包的时候要注意不要发送大于1460的包。8019吃不消化。
5,一定要修改内存分配部分,使4位对齐,否则必定死机。
6,在包结构中放弃4字节对齐。加上关键字__packed
7,可以缩短时间中断,以提高速度,但一定要修改对应的预定义,使等待充发等时间不变。
13: 这里也有朋友在做snmp呀能留个联系方式吗,最近一直在做snmp,苦于没人一起讨论,目前在 ZLGTCP/ IP基础上已实现snmp的基本操作,但还在功能上继续完善,而且初步测试性能上也不行,主要原因应该在于 TCP/ IP协议栈

有过做snmp经验的或是将要做snmp的朋友可以加我MSN:yamoon@ciitz.net

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]