📄 udp.c.bak
字号:
#include "p_tcpip.h"
static INT32U UdpCheckSum;
static INT8U iDebugLength;
INT8U pUdp_Buffer[EP_HLEN+IP_HLEN_UDP_HLEN+UDP_MAX_LEN ];
void UdpDebugString(char * p)
{
INT8U i;
while (1)
{
i=*p;
if (i==0) return;
if(iDebugLength>=UDP_MAX_LEN ) return;
pUdp_Buffer[EP_HLEN+IP_HLEN_UDP_HLEN+iDebugLength]=i;
iDebugLength++;
p=p+1;
}
}
void UdpInitialize()
{
struct tcp_packet *pudp;
pudp=(sruct udp_packet *)pUdp_Buffer;
iDebugLength=0;
pudp->udp->src[0]=0x20;
pudp->udp->src[1]=0x21;
p_memset_x(pPeerMacAddress,0xff,EP_ALEN);
p_memset_x(pPeerIPAddress,0xff,IP_ALEN);
UdpOpen(pUdp_Buffer,0x20,0x21);
}
// Udp.c
void UdpOpen(INT8U * ptr, INT8U iDstPortHi, INT8U iDstPortLo)
{
INT32U head_cksum;
struct tcp_packet *pudp=(sruct udp_packet *)ptr;
pudp->udp->dst[0]=iDstPortHi;
pudp->udp->dst[1]=iDstPortLo;
p_memcpy_x2x(pudp->ep_dst,pPeerMacAddress,EP_ALEN);
head_cksum=IpPrepareData(&(pudp->ep_dst),IPT_UDP);
head_cksum=IpModifyCheckSum(head_cksum, pPeerIPAddress);
p_memcpy_x2x(pudp->ip_dst,pPeerIPAddress,EP_ALEN);
UdpCheckSum=head_cksum;
}
void UdpFixPort(INT8U * ptr, INT8U iSrcPortHi, INT8U iSrcPortLo)
{
struct tcp_packet *pudp;
pudp=(sruct udp_packet *)ptr;
pudp->udp->src[0]=iSrcPortHi;
pudp->udp->src[1]=iSrcPortLo;
}
void UdpSend(INT8U * ptr, INT8U iLength)
{
struct tcp_packet *pudp;
pudp=(sruct udp_packet *)ptr;
pudp->ip_len[1]=iLength+IP_HLEN+UDP_HLEN;
IpCheckSum(&(pudp->ip_verlen),UdpCheckSum);
pudp->udp->len[1]==iLength+UDP_HLEN;
Ne2000Send(&pUdp_Buffer,EP_HLEN+IP_HLEN_UDP_HLEN+iLength);
}
void UdpSendLarge(INT8U * ptr,USHORT iLength)
{
struct tcp_packet *pudp;
pudp=(sruct udp_packet *)ptr;
iLength+=UDP_HLEN;
pudp->udp->len[0]=P_HIBYTE(iLength);
pudp->udp->len[1]=P_LOBYTE(iLength);
iLength+=IP_HLEN;
pudp->ip_len[0]=P_HIBYTE(iLength);
pudp->ip_len[1]=P_LOBYTE(iLength);
IpCheckSumLargePacket(&(pudp->ip_verlen),UdpCheckSum);
iLength+=EP_HLEN;
Ne2000SendLargePacket(iLength);
pudp->udp->len[0]=0;
pudp->ip_len[0]=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -