⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iar-

📁 IAR_example_EasyARM8962.zip
💻
📖 第 1 页 / 共 2 页
字号:
    servaddr.sin_addr[3] = 55;
    servaddr.sin_port    = 1026;                                        /*  设置服务器端口号            */
    s =* socket(0, SOCK_DGRAM, UDP_PROTOCOL);                           /*  建立SOCKET                  */
    clientaddr.sin_family = 0;
    clientaddr.sin_addr[0] = NetPort[0].My_Ip[0];                       /*  设置本地IP地址              */
    clientaddr.sin_addr[1] = NetPort[0].My_Ip[1];
    clientaddr.sin_addr[2] = NetPort[0].My_Ip[2];
    clientaddr.sin_addr[3] = NetPort[0].My_Ip[3];
    clientaddr.sin_port = 1025;                                         /*  设置本地监听端口号          */
    iii = bind((SOCKET * ) & s, (struct sockaddr *) & clientaddr, sizeof(clientaddr));	
                                                                        /*  绑定服务器地址              */
    while (1) {
        rec_coute=recvfrom( s, rec_buffer, 100, 0, (struct sockaddr *) & servaddr, &iii ); 	
                                                                        /*  接受数据                    */
        if(rec_coute > 0) {
            send_coute = sendto(s, rec_buffer, rec_coute, 0, 
                               (struct sockaddr *) & servaddr, 
                                sizeof(servaddr) );
                                                                        /*  把接受的数据返回            */			
            send_coute = send_coute;		                            /*  防止编译警告                */
        } 
    }    
}

/*********************************************************************************************************
** Function name:         TaskE
** Descriptions:          TCP协议数据接收和发送任务
** input parameters:      无
** output parameters:     无
** Returned value:        无
*********************************************************************************************************/ 
 void TaskE (void  *pdata) 
{
    uint8   Temp = 0;
    int     addrlen;
    int     ei;
    uint8   tempdata[400];                                              /*  接收数据缓存区              */
    SOCKET  s; 
    struct  sockaddr servaddr, cliaddr;
    OSTimeDly(60);
    servaddr.sin_family = 0;
    servaddr.sin_addr[0] = NetPort[0].My_Ip[0];                         /*  设定本地SOCKET的IP地址      */
    servaddr.sin_addr[1] = NetPort[0].My_Ip[1];
    servaddr.sin_addr[2] = NetPort[0].My_Ip[2];
    servaddr.sin_addr[3] = NetPort[0].My_Ip[3];
    servaddr.sin_port = 80;                                             /*  设定监听的本地端口          */
    s =* socket(0, 0, 0);                                               /*  建立一个基于TCP通讯的SOCKET */
    ei = bind((SOCKET *) & s, 
              (struct sockaddr*) & servaddr, sizeof(servaddr));         /*  绑定本地IP地址和监听端口    */
    ei = listen( (SOCKET *) & s, 4 );                                   /*  监听的连接数是4个连接       */
    if (ei != 4) {                                                      /*  检查是否成功建立4个连接监听 */
        while(1) {
            ;                                                           /*  错误处理                    */
        }
    }
    while (1) {
        Temp = accept((SOCKET *) & s, (struct sockaddr *) & cliaddr, &addrlen );	
                                                                        /*  接受客户端的连接请求        */
        if (Temp != 0xff) {                                             /*  检查是否成功接受连接        */
            OSTimeDly(20);
            (void)recv(Temp, tempdata, 400, 0 );                        /*  读取数据                    */
            if (tempdata[5] == ' ')	{                                   /*  请求网页                    */
            send(Temp, httpweb, sizeof(httpweb) - 1, 0 );               /*  发送应答                    */
            send(Temp, web, sizeof(web), 0 );                           /*  发送网页                    */
        }                    
        else if (tempdata[5] == '1') {                                  /*  请求背景图片                */
			
            send(Temp, httpgif, sizeof(httpgif) - 1, 0 );               /*  发送应答                    */
            send(Temp, bmp, sizeof(bmp), 0 );                           /*  发送图片                    */
        }

        memset(tempdata, 0, 400);                                       /*  清空接受缓存区              */
    		OSTimeDly(20);
    		close(Temp);                                                /*  断开连接                    */
		}
    }
}

/*********************************************************************************************************
** Function name:         task0
** Descriptions:          启动任务
** input parameters:      无
** output parameters:     无
** Returned value:        无
*********************************************************************************************************/
void task0 (void  *pdata)  
{ 
    #if OS_CRITICAL_METHOD == 3                                         /*  Allocate storage for CPU 
                                                                            status register             */
    OS_CPU_SR  cpu_sr;
	#endif
    targetInit();                                                       /*  add by cmj                  */
    /*
     *  UBYTE EX_RAM *er;
     */
    OSTaskCreateExt(TaskB,
                    (void *)0,
                    &task1_stack[task1stck - 1],
                    TASK_1_PRIO,
                    TASK_1_ID,
                    &task1_stack[0],
                    1000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */       
                    0);
    OSTaskCreateExt(TaskC,
                    (void *)0,
                    &task2_stack[task2stck - 1],
                    TASK_2_PRIO,           
                    TASK_2_ID,
                    &task2_stack[0],
                    2000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */
                    0);	 
    OSTaskCreateExt(TaskD,
                    (void *)0,
                    &task3_stack[task3stck - 1],
                    TASK_3_PRIO,
                    TASK_3_ID,
                    &task3_stack[0],
                    1000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */
                    0);	

    OSTaskCreateExt(TaskE,
                    (void *)0,
                    &task4_stack[task4stck-1],
                    TASK_4_PRIO,
                    TASK_4_ID,
                    &task4_stack[0],
                    2000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */
                    0);	

    SetNetPort();
    InitNic(0);                                                         /*  lm3s6965初始化,在global.c   */
    Initial_arp();
    Tcp_Initial();
    Udp_Initial();
	
    while(1) { 
        #if (TARGET_LED1_EN > 0) || (TARGET_LED2_EN > 0) || (TARGET_LED3_EN > 0) || (TARGET_LED4_EN > 0)
    	ledOn(2);                                                       /*  点亮LED1                    */   
    	ledOn(1);   
    	ledOn(3);   
    	ledOn(4);         	                      
    	OSTimeDlyHMSM(0, 0, 0, 500);                                    /*  延时0.5秒                   */               	
    	ledOff(2);                                                      /*  关闭LED1                    */
    	ledOff(1);   
    	ledOff(3);   
    	ledOff(4);   
    	OSTimeDlyHMSM(0, 0, 0, 500);                                    /*  延时0.5秒                   */ 
    	#endif          	
    }                                                                   /*  end for while(1)            */
}

/*********************************************************************************************************
** Function name:         main
** Descriptions:          主函数
** input parameters:      无
** output parameters:     无
** Returned value:        无
*********************************************************************************************************/
int main (void)
{
    OSInit();                                                           /*  Initialize uC/OS-II         */
    OSTaskCreateExt(task0,
                    (void *)0,
                    &task0_stack[task0stck - 1],
                    TASK_START_PRIO,
                    TASK_START_ID,
                    &task0_stack[0],
                    3000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */
                    0);
        
    RecPackedFlag      = OSSemCreate(0);                                /*  表示一个或多个事件发生      */
    RecBufOverFlowFlag = OSSemCreate(0);
    RecTcpPackedFlag   = OSSemCreate(0);
    RecPingPackedFlag  = OSSemCreate(0);
    SendFlag           = OSSemCreate(1);

    RecIcmpQFlag       = OSQCreate(&RecIcmpQ[0],Q_Max_Size);
    RecTcpQFlag        = OSQCreate(&RecTcpQ[0],Q_Max_Size);
    RecUdpQFlag        = OSQCreate(&RecUdpQ[0],Q_Max_Size);
    OSStart();                                                          /*  Start multitasking          */
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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