c - C 中的线程; TCP聊天程序

标签 c multithreading chat

我正在学习信息安全,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/

相关文章:

api - 获取计数 CHAT 消息

我可以存储指向 __PRETTY_FUNCTION__ 的指针以供以后使用,还是需要立即复制该字符串?

ios - 如何将单个字符转换为 NSString?

java - Jetty,我的五个线程在哪里?

android - Android线程中ViewPager切换模拟

javascript - 如何设置滚动条的默认位置

c++ - C/C++ 可视化库

c - 在 c 中通过 strtok 读取文件并标记化

java - java并发包是用锁实现的吗?

javascript - 如何使我的 javascript 聊天轮询脚本更加高效?