⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udp.c.bak

📁 一种操作系统源码核
💻 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 + -