?? ne2000.c
字號:
/*****************************
03.12.10 解決dvr死機問題,原因:在處理dvr命令時,有其他的網絡命令干擾dvr命令的執行,多個全局變量公用
03.12.22 解決兩臺主機不能同時控制一臺主機,原因:兩秒限制
03.12.25 修改主機通信協議,設置本機ip地址命令原為IP修改為MYIP,原因:IP 和RIP 命令太相近(后又改回原來命令“ip”)
04.7.15 修改udp主動發送數據包,目的端口號為1521,命令為$
主程序
*******************************/
#include "net.h"
#include "struct.h"
#include "fundef.h"
#include "variable.h"
void main(void)
{
unsigned char i;
init();
while(1)
{
if(bCommandFlag){bCommandFlag=0;process_command();}
if(bDataFlag){bDataFlag=0;process_data();}
if(double_second)
{
double_second=0;
//process_telnet();
gateway_arp_request();
if(c_type==2)
{
if(ping_ip_address_ttl==0){send_string("3 a");}
else if(ping_ip_address_ttl>7){send_string("1 a");}
FunCheckOnline();
}
if(c_DvrRunTime==0)b_RunDvrCommand=0;
}
pwdi=!pwdi;
if(b_100ms)
{
b_100ms=0;
if((tcp_count>RetryTcp_Count)&&(ping_ip_address_ttl<2)&&(b_RunDvrCommand==0))
{//解析ip地址
if((dvr_ip_address.dwords&mask_ip_address.dwords)==(my_ip_address.dwords&mask_ip_address.dwords))
{//表示位于同一子網.
ping_ip_address_ttl=1;
arp_request(dvr_ip_address.dwords);
}else
{//表示屬于不同的子網,需要通過網關.
ping_ip_address_ttl=10;
for(i=0;i<6;i++){dvr_ethernet_address.bytes[i]=gateway_ethernet_address.bytes[i];}
if(gateway_ip_address_ttl==0){ping_ip_address_ttl=0;}
}
tcp_count--;
}
}
process_telnet();
pwdi=!pwdi;
for(i=0;i<=rt_size;i++)
{
if(retransmit_buffer[i].rtframe.status!=0)
{
if(retransmit_buffer[i].rtframe.timeout>rt_time){retransmit_buffer[i].rtframe.timeout=0;}
if(retransmit_buffer[i].rtframe.timeout==0)
{
send_string("R a");
retransmit_packet(i);
retransmit_buffer[i].rtframe.status++;
if(retransmit_buffer[i].rtframe.status>rt_cishu){retransmit_buffer[i].rtframe.status=0;}
}
}
if(retransmitpacket[i].status!=0)
{
if(retransmitpacket[i].timeout>200){retransmitpacket[i].timeout=0;}
if(retransmitpacket[i].timeout==0){retransmitpacket[i].status=0;}
}
}
if(retransmit_buffer[rt_size].rtframe.status==0)
{
if((c_readcommand!=c_writecommand) || ((c_writecommand==c_readcommand)&& b_cb_full))
{b_cb_full=0;FunNetSendCommandBuffer();}
}
pwdi=!pwdi;
if(check_new_packet())
{
FunProcessRec();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -