- Đầu tiên ta cộng các từ 16 bit trong header: Code:
Hàm xử lý gói tin nhận được: Code:
//--- // Writen by NTTam - PTITHCM
//--- #include "packet.h" #include "ip.h" #include "uart.h" “udp.h” Code: //--- // Writen by NTTam - PTITHCM
//---
#ifndef UDP_H
#define UDP_H
//---
#endif //UDP_H
Ta chỉ viết 2 hàm cho giao thức UDP:Hàm gửi gói tin bằng UDP: Hàm gửi gói tin bằng UDP:
Code:
//--- //Ham gui di mot goi UDP
void udpSend(unsigned long dstIp, unsigned int dstPort, unsigned int len, unsigned char* udpData)
{
struct ntUDPHeader* udpHeader;
udpHeader = (struct ntUDPHeader*)(udpData - UDP_HEADER_LEN); len += UDP_HEADER_LEN;
udpHeader->desPort = HTONS(dstPort); udpHeader->srcPort = HTONS(dstPort); udpHeader->Len = HTONS(len);
udpHeader->Checksum = 0;
ipSend(dstIp, IP_PROTO_UDP, len, (unsigned char*)udpHeader); }
Hàm xử lý gói tin nhận được:Code: Code:
//--- ---
//Ham xu ly goi UDP nhan duoc, duoc goi boi ham xu ly goi IP (IPProcess) // Hien chua co ung dung chay UDP nen ham nay trong
void UDPProcess(unsigned int len, struct ntIPHeader* packet) {
dhcpIn((len - IP_HEADER_LEN - UDP_HEADER_LEN), (struct netDhcpHeader*) ((char*)packet - IP_HEADER_LEN - UDP_HEADER_LEN));
#ifdef NET_DEBUG
printf("NetStack UDP/IP Rx Dummy Handler\r\n"); #endif
}