您的位置:首页 > 其它

心得话聊

2015-05-29 17:21 183 查看
折腾了一周,,断断续续地试着了解gloox的内容。这个开源库,完全把xmpp协议的流程给封装写好了,当然用来通信的socket也是被包装过。我看了,可能底子不好,c++缺乏少点基础知识,尝试去恶补了下。然后去读代码的是时候完全是一大块一大块的看的(一些细的语法点不太懂,唉。),网上会有人给出一些解析和本身库例子也有注释,然后我也是跟着一模块一条注释,大概的功能,,然后我就试着去改里面的东西,发现无从下手,想重新写,发现水平还没好,然后就从例子下手,在修改信息发送接受时,例子中的客户端可以具有发送数据和循环接受数据的能力。如同网上的一些疑问,我也把这个疑问写在这里:这种的设计模式使receive处于一个无限的while循环,不断的调用select+accept或者select+receive,是否利于send之类的方法在同一个socket上发送数据?

后来我想用多线程的办法试着把send和recv分开,单独作为一个线程。然后就出现了一些列语法问题,,待我慢慢去了解c++时,才发现有点死板,应该是兼容了C的缘故。一定要按顺序把格式写下来的。比如说一旦把声明的函数放到下边,标识符就会找不到等。。

我其中的一个代码,但会卡段,应该是循环调到循环里去了。。唉

子线程函数:

bool sd = true;

unsigned int __stdcall ThreadFun(PVOID pM)

{

MessageTest *r = new MessageTest();

char he[20];

cin.getline(he, 20);

if (sd)

{

sd = false;

r->start();

cout << he << endl;

return 0;

}

主函数:

int main(int /*argc*/, char** /*argv*/)

{

const int THREAD_NUM = 10;

HANDLE handle[THREAD_NUM];

for (int i = 0; i < THREAD_NUM; i++)

handle[i] = (HANDLE)_beginthreadex(NULL, 0, ThreadFun, NULL, 0, NULL);

WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE);

return 0;

}

再看看,顺便再了解下c++,继续学习,无涯之路。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: