我正在学习信息安全,4 周前我们需要编写一个小工具,可以通过 TCP 在 2 台 PC 之间进行通信。我现在有假期,我想使用 是时候将这个小东西构建成聊天程序了。
我很确定我需要线程,因为我需要监听 一直收到消息,而 recvfrom 阻止我发送消息 当它等待新消息时。
所以我的想法是我需要 2 个独立的线程,一个用于监听,一个用于发送,这样我就有了这种“实时聊天的感觉”。
我已经读过这 3 篇文章 The Geek Stuff Thread Tutorial但这对我没有任何帮助。我无法找到对此事的良好解释 我真的很想自己做,因为我很兴奋 第一次产生有用的东西。
你们知道这方面有什么好的 C 教程链接吗? 抱歉我的英语不好,我现在真的很累。
编辑: 我刚刚发现在这里请求场外资源被认为是偏离主题的。
我目前遇到的具体问题是,我不确定如何实现一个除了调用recvfrom并将收到的消息放入std.out并继续监听之外什么也不做的线程。我已经有这个代码:
while(loop){
/* ~~ RECVFROM ~~ */
printf(YELLOW"@"COLOR_RESET"Waiting for Client-Message!\n");
sizer = recvfrom(udpsocket,msg,512,0,(struct sockaddr*) &destaddr,&addrsize);
if(sizer==-1){
perror("recvfrom");
return 0;
}else{
printf(GREEN">%s\n"COLOR_RESET,msg);
}
/* ~~ ~~~~~~~~ ~~*/
if((*(msg)=='-')&&(*(msg+1)=='x')){
loop=0;
}
memset(msg,'\0',512);
}
我需要一些帮助将其放入线程中,我可以查找其他所有内容,我只需要一些帮助来开始。
先谢谢大家了!
最佳答案
这是a complete manual !如果您确实需要使用线程,我希望这会像对我一样有所帮助。
关于c - C 中的线程; TCP聊天程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245932/