Hàm xử lý gói tin nhận được: Code:

Một phần của tài liệu ATMEGA32 GIAO TIẾP VỚI ENC28J60 QUA SPI – AVR WEBSERVER (Trang 88)

- Đầ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

}

Một phần của tài liệu ATMEGA32 GIAO TIẾP VỚI ENC28J60 QUA SPI – AVR WEBSERVER (Trang 88)

Tải bản đầy đủ (DOCX)

(150 trang)
w