【发布时间】:2025-11-27 22:35:02
【问题描述】:
所以我正在尝试用 C 语言编写一个程序,该程序可以通过 UDP 从另一台计算机接收数据包,同时还能够在有人在命令行中输入“退出”时停止监听。我的问题是 fgets 和 recvfrom 都等到发生了一些事情,所以如果我当前正在执行 fgets 我的程序将忽略传入的消息,如果我当前正在等待消息,它将忽略终端的输入。有什么办法可以同时做这两件事吗?
相关代码:
while (strcmp(sendline, "quit")!=0) {
fgets(sendline,MAXLINE,stdin);
if((nbytes=recvfrom(sd,recvline,1+strlen(sendline),0,
(struct sockaddr*)&sad, &fromlen))<0){
perror("recvfrom");
exit(1);
}
}
【问题讨论】:
-
你考虑过2个线程吗?
标签: c sockets udp udpclient fgetc