[英]Problem with while() loop in code with sockets
我的C代码中有简单的while()循环,但printf()无法正常工作,服务器将新客户端连接到他,这对新连接没有问题。
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <pthread.h>
int clients_fd[100];
int cnt = 0;
int main() {
int serv_sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in serv_addr;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(8080);
serv_addr.sin_family = AF_INET;
bind(serv_sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
listen(serv_sock, 100);
while (cnt < 100) {
int client_sock = accept(serv_sock, NULL, NULL);
clients_fd[cnt] = client_sock;
printf("cnt is %d", cnt);
cnt++;
}
return 0;
}
这里的问题是行缓冲:
printf("cnt is %d", cnt);
所以你不会很快得到输出,因为accept()
阻塞。 只需添加换行符:
printf("cnt is %d\n", cnt);
那应该可以解决你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.