📄 iar-
字号:
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 + -