ARM7單片機+RTL8019嵌入式TCP_IP協議棧使用分析
WEB服務器程序清單
/*****************************************************
* 名稱:TCP_TEST()
* 功能:設置TCP模塊
* 入口:無
* 出口: 無
*********************************************************/
void TCP_SETUP(void)
{
/*設置本地TCP服備器的IP地址*/
TCP_serveraddr.sin_family = 0;
TCP_serveraddr.sin_addr[0] = MY_IP_ADD[0];
TCP_serveraddr.sin_addr[1] = MY_IP_ADD[1];
TCP_serveraddr.sin_addr[2] = MY_IP_ADD[2];
TCP_serveraddr.sin_addr[3] = MY_IP_ADD[3];
TCP_serveraddr.sin_port = 80;
/*將TCP server的IP地址與SOCKET綁定*/
t = socket(0,0,TCP_PROTOCOL);
iii=bind(t,TCP_serveraddr,sizeof(TCP_serveraddr));
iii=listen(t,4);
}
/********************************************************
* 名稱:TCP_TEST()
* 功能:TCP打開網頁測試
* 入口:無
* 出口: 無
********************/
void TCP_TEST(void)
{
temp = accept(t,TCP_clientaddr,iii);/*accept網頁獲取請求*/
if(temp != 0xffff)
{ templen = recv(temp,TCP_rec_buff,1024,0);
if(TCP_rec_buff[5] == ' ')
{ send(temp,httpweb,169,0); /*發送http網頁*/
send(temp,web,395,0);
}
else if(TCP_rec_buff[5] == '1')
{
send(temp,httpgif,169,0); /*發送GIF,BMP圖片背景*/
send(temp,bmp,442,0);
}
close(temp);
}
}
2)簡單UDP服務器—通過函數UDP_TEST()完成設置本地UDP服備器的IP地址和遠端口服務器的IP地址, 其過程如下:
1.調用SOCKET API函數socket(0,0,TCP_PROTOCOL)分配一個SOCKET
2.調用SOCKET API函數bind()將UDP server的IP地址與SOCKET綁定,將調用SOCKET API函數enable_a_port_listen(1025)起動監聽。
3.函數UDP_TEST()通過函數recfrom()接收UDP數據報,接收到的UDP數據報調用SOCKET API函數sendto()回傳遠程服務器。
UDP服務器程序清單
* 名稱:UDP_SETUP()
* 功能:設置UDP模塊
* 入口:無
* 出口: 無
***********************************************************/
void UDP_SETUP(void)
{
serveraddr.sin_family = 0; /*設置遠端服務器的IP地址*/
serveraddr.sin_addr[0] = 192;
serveraddr.sin_addr[1] = 168;
serveraddr.sin_addr[2] = 0;
serveraddr.sin_addr[3] = 1;
serveraddr.sin_port = 1026;
s = socket(0,0,UDP_PROTOCOL);
clientaddr.sin_family = 0; /*設置本地UDP客戶端的IP地址*/
clientaddr.sin_addr[0] = MY_IP_ADD[0];
clientaddr.sin_addr[1] = MY_IP_ADD[1];
clientaddr.sin_addr[2] = MY_IP_ADD[2];
clientaddr.sin_addr[3] = MY_IP_ADD[3];
clientaddr.sin_port = 1025;
/*將本地IP地址與SOCKET綁定*/
iii=bind(s,clientaddr,sizeof(clientaddr));
enable_a_port_listen(1025);
}
/************************************************************
* 名稱:UDP_TEST()
* 功能:UCP數據報收發測試
* 入口:無
* 出口: 無
*************************************************************/
void UDP_TEST(void)
{
/*接收UDP數據報*/
len = recvfrom(s,rec_buff,400,0,serveraddr,iii);
if(len > 0)
{ /*將接收到的UDP數據報發送回服務器端*/
sendto(s,rec_buff,len,0,serveraddr,iii);
}
}
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
tcp/ip相關文章:tcp/ip是什么
評論