dmnet.c

来自「mcf5307实验源代码」· C语言 代码 · 共 154 行

C
154
字号

#include "..\net\socketd.h"
#include "..\NUCLEUS\mcf5307.h"
#include "..\NUCLEUS\nucleus.h"

#define  NetBase    0x30400200 //0x44000200  

extern unsigned char NetError;
extern unsigned char NetProm[256];
extern unsigned char manual[6];

extern MCF5307_IMM *imm;

extern sint next_socket_no;
extern NU_TASK         Task_2;
extern NU_SEMAPHORE    Semaphore_tcp_receive;

//extern int16 arp_request(uint8 *tipnum);

unsigned char ArpIP[4];
sint MySocketNumber;


/*
void InitNet(void)
{
 int Address;
 int Sta;
 
 manual[0]=0x52;	//mac address
 manual[1]=0x54;
 manual[2]=0x4c;
 manual[3]=0xbd;
 manual[4]=0xa1;
 manual[5]=0x1a;
 
 
 
 Address=nic_detect(NetBase);       //to detect if there is a net card
 
 nic.iobase=0x44000200;
 nic_init(&nic,NetBase,NetProm,manual); 
 
 //nic_register_notify(&nic,NewPacketReceived);

 nic_start(&nic,0x00);
  

}

*/


sint GetMySocketNumber(sint next_number)
{
	
 sint temp;
 temp=next_number;
 temp--;
 if(temp<0) temp=0;
 return(temp);	
}

int16 TodoARP1(void)
{
	
 ArpIP[0]=192;//219;
 ArpIP[1]=168;//245;
 ArpIP[2]=0;//153;
 ArpIP[3]=110;//25;
 
 if(arp_request(ArpIP)==NU_SUCCESS)return NU_SUCCESS;//NU_SUCCESS=0
 return -1;//error
 	
}



void TodoARP(void)
{
	
 ArpIP[0]=192;//219;
 ArpIP[1]=168;//245;
 ArpIP[2]=0;//153;
 ArpIP[3]=110;//25;
 
 arp_request(ArpIP);
 	
}

void TodoTCP(void)
{
	
  struct addr_struct	DestAdd;
  struct id_struct      id;
  
//  unsigned char DestIP[4]={192,168,0,3};
   char DestName[10]="FTP";
//  id.is_ip_addrs=DestIP;
  
  
  DestAdd.family=NU_FAMILY_IP;
  DestAdd.port=21;
  DestAdd.id.is_ip_addrs[0]=202;
  DestAdd.id.is_ip_addrs[1]=117;
  DestAdd.id.is_ip_addrs[2]=25;
  DestAdd.id.is_ip_addrs[3]=172;
  DestAdd.name=DestName;
  
  if(NU_Socket(NU_FAMILY_IP,NU_TYPE_STREAM,NU_PROTO_TCP)>=0)//create new socket (in order to connect ftp)
  {
   Printf("\r\nClient Socket open ok! \r\n"); 
   	  	
   MySocketNumber=GetMySocketNumber(next_socket_no);	  	
   if(NU_Connect(MySocketNumber,&DestAdd,0x00)>=0)
       {
       	  NU_Sleep(100);
       	if(NU_SUCCESS==NU_Release_Semaphore(&Semaphore_tcp_receive))
       	 {
       	  NU_Sleep(20);	
          Printf("\r\nClient Socket connect OK! receive task start ok!\r\n"); 	
         }
        else
          Printf("\r\nClient Socket connect OK! receive task start bad!\r\n"); 	 
       }
       
       
       
   else
       Printf("\r\nClient Socket connect fail!\r\n");    
   	 
  } 
  
  else
      Printf("\r\nClient Socket open fail!\r\n");   
  
   
}



void DisTCP(void)
{
  if( NU_SUCCESS==NU_Close_Socket(MySocketNumber) )
    {
      if(NU_SUCCESS==NU_Reset_Semaphore(&Semaphore_tcp_receive,0)) 
       Printf("\r\nClient Socket close ok! receive task close ok!\r\n  ");     	
      else
       Printf("\r\nClient Socket close ok! receive task close bad!\r\n  "); 
     } 
  else
      Printf("\r\nClient Socket close bad!\r\n");     
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?