【发布时间】:2014-08-25 08:03:42
【问题描述】:
在阅读了 Beej 的编程指南后,我正在尝试制作一个小聊天程序。
然后我在考虑程序本身的基础知识,我不知道如何同时打印recv()的输出和获取send()的输入,因为客户端总是可以写一些东西和发送,但是如何在他尝试输入时也打印一些东西?
我想到了线程,并且对它们有所了解,我创建了 2 个简单的线程:第一个,每 3 秒打印一个句子,第二个得到输入,这个小程序当然有一个很多问题,例如。如果你开始打字,而另一个线程需要打印一些东西,它会简单地接受你写的东西,并用自己的输出打印它。
这是代码,我尝试重新创建它,希望你们能帮助我..
pthread_t tid[2];
void* printse();
void* getinput();
int main(int argc, char *argv[])
{
int error;
error = pthread_create(&(tid[1]), NULL, &getinput, NULL);
if(error != 0)
{
printf("ERROR\n");
} else {
printf("NOERROR\n");
}
error = pthread_create(&(tid[2]), NULL, &printse, NULL);
if(error != 0)
{
printf("ERROR\n");
} else {
printf("NOERROR\n");
}
sleep(5000);
return 0;
}
void* printse()
{
while(1)
{
printf("POTATO\n");
sleep(3);
}
return NULL;
}
void* getinput()
{
char *input;
while(scanf("%s", input) != EOF)
{
printf("-%s\n", input);
}
return NULL;
}
【问题讨论】: