|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
LWIP如何建立多个TCP连接? |
作者:加油站 栏目:ARM技术 |
我在uCOS+LWIP平台上做TCP传输实验,建立了三个通讯任务,一个做客户端,主动去连接,另外两个任务做服务器.接受TCP连接.目前只有一个主动连接(客户端任务)和一个被动连接(服务器端任务)可正常工作,无法再增加连接数,这是为什么?请熟悉LWIP的大侠指点一下. |
2楼: | >>参与讨论 |
作者: eleven11 于 2007/4/20 10:49:00 发布:
原始版本的lwip忘光了,提供我修改的,希望有帮助 /*线程空间池*/ typedef struct tagNETTHREAD { BOOL state;//状态 int prio; //任务prio OS_STK threadStk[NET_THREAD_STK_LEN];//堆栈空间 }NETTHREAD, *PNETTHREAD; /*初始化线程空间*/ static BOOL ThreadSpaceInit(void) { int i; if ((NET_THREAD_MAX_NUM + 8 + 1) > OS_MAX_TASKS){ //线程任务最大数目超过OS_MAX_TASKS return FALSE; } for (i = 0; i < NET_THREAD_MAX_NUM; i ++){ NetThreads[i].state = THREAD_SPACE_STATE_FREE; //状态为free NetThreads[i].prio = NET_RECV_TASK_PRIO - 1 - i; //任务prio分配为tcp主循环任务的上NET_THREAD_MAX_NUM个 } return TRUE; } /*每accept一个SOCKET分配一个线程*/ int NetThreadCreate(void * s) { int i; for (i = 0; i < NET_THREAD_MAX_NUM; i ++){ //搜索线程池,首先释放已经销毁的线程资源 if (NetThreads[i].state == THREAD_SPACE_STATE_DELING)//线程状态是否为del if (OSTaskDel(NetThreads[i].prio) == OS_TASK_DEL_ERR){//若是,判断任务是否已经删除 NetThreads[i].state = THREAD_SPACE_STATE_FREE;//若任务已经删除,则释放线程资源 } } for (i = 0; i < NET_THREAD_MAX_NUM; i ++){//搜索线程池,看是否有可用的线程资源 OS_ENTER_CRITICAL(); if (NetThreads[i].state == THREAD_SPACE_STATE_FREE){ NetThreads[i].state = THREAD_SPACE_STATE_USED; OS_EXIT_CRITICAL(); /*创建线程任务,server是scoket里面的任务服务函数,所以首先需要添加SOCKET里面的域,并在建立服务期线程 connect成功的时候给你赋值*/ if (OSTaskCreate(((PSOCKET)s)->server, s, &NetThreads[i].threadStk[NET_THREAD_STK_LEN - 1], NetThreads[i].prio)){ return (int)&NetThreads[i]; //返回线程id,必须在SOCKET里面在添加一个域用来保存 } NetThreads[i].state = THREAD_SPACE_STATE_FREE; }else{ OS_EXIT_CRITICAL(); } } return ERROR; } /*销毁一个线程*/ void NetThreadDel(void * s) { PNETTHREAD pt;//根据SOCKET得到线程id(pt), //线程空间的state要设置为del pt->state = THREAD_SPACE_STATE_DELING; //在根据次id得到线程任务prio,删除任务 OSTaskDel(pt->prio); } * - 本贴最后修改时间:2007-4-20 10:52:41 修改者:eleven11 |
3楼: | >>参与讨论 |
作者: high 于 2007/4/25 2:24:00 发布:
一般这玩意都有配置选项,去看看连接数有没有bei限制等等的... |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |