大家谁见过这种多线程socket程序,是我没学好,还是这种模型不对

wqs_qiu_shi 2005-04-08 01:38:56
大家谁见过这种线程模型,里面的accept和recv是别的公司封装的,
这是什么鸟意思。我很不解,是我没学好,还是这种模型不对。(莫非这是长连接?)
要我处理,肯定是
while(1)
{
accept(XXXX)
createThread //我的线程函数肯定不会循环的
}

main()
{
while(flag == 0)
{
/* 服务器阻塞,直到客户程序建立连接 */
retaccept = VSPPReceiveAccept(g_Data.IP,port1);
if ( retaccept == 0)
{

ret = pthread_create(&threadID,&threadAttr1,(void*)MyRecvProc,NULL);

}
usleep(1000); //edit by chen
}
}


void MyRecvProc(void *theData)
{
ret = VSPPReceiveMessage((unsigned char*)g_Data.IP, &g_Data.port, msg, message);
}
...全文
122 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sct 2005-09-07
  • 打赏
  • 举报
回复
学习
wqs_qiu_shi 2005-04-08
  • 打赏
  • 举报
回复
明白了,accept队列。
晕,看来我太弱了。
guohaibo 2005-04-08
  • 打赏
  • 举报
回复
呵呵,你的线程应该一直循环,否则象楼上的,一次就结束了
everandforever 2005-04-08
  • 打赏
  • 举报
回复
1秒而已,不会有大问题的。
windows会先帮你把连接请求接受,然后你休息够了就到windows那里领取这个连接。
everandforever 2005-04-08
  • 打赏
  • 举报
回复
对阿,绝大多数都是你所说的长连接。
wqs_qiu_shi 2005-04-08
  • 打赏
  • 举报
回复
usleep(1000); //edit by chen
这个sleep会不会造成连接接不进来。
wqs_qiu_shi 2005-04-08
  • 打赏
  • 举报
回复
他这种是长连接,没错吧
就是接入一个连接后,就用这个通道线程一直收。

而我的是收一次就关掉了。

他这种模型是最优的吗?你们写这种,都是怎么样的方式。
everandforever 2005-04-08
  • 打赏
  • 举报
回复
你如果不循环岂不是整个线程只能读一次数据就退出了?
  • 打赏
  • 举报
回复
你那样没办法退出啊
wqs_qiu_shi 2005-04-08
  • 打赏
  • 举报
回复
//他在接收处理函数是一直循环的。我写的话,不会在这循环的。

void MyRecvProc(void *theData)
{
while(1)
{
ret = VSPPReceiveMessage((unsigned char*)g_Data.IP, &g_Data.port, msg, message);
}
}
everandforever 2005-04-08
  • 打赏
  • 举报
回复
你的和他的没什么区别啊
wqs_qiu_shi 2005-04-08
  • 打赏
  • 举报
回复
大家谁见过这种线程模型,里面的accept和recv是别的公司封装的,
这是什么鸟意思。我很不解,是我没学好,还是这种模型不对。(莫非这是长连接?)
要我处理,肯定是
while(1)
{
accept(XXXX)
createThread //我的线程函数肯定不会循环的
}


------------------------------------------------------
原程序摘部分如下:

main()
{
while(flag == 0)
{
/* 服务器阻塞,直到客户程序建立连接 */
retaccept = VSPPReceiveAccept(g_Data.IP,port1);
if ( retaccept == 0)
{

ret = pthread_create(&threadID,&threadAttr1,(void*)MyRecvProc,NULL);

}
usleep(1000); //edit by chen
}
}


void MyRecvProc(void *theData)
{
while(1)
{
ret = VSPPReceiveMessage((unsigned char*)g_Data.IP, &g_Data.port, msg, message);
//处理接到内容
}
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧