我目前正在C語言中做客戶端/服務器應用程序,通過互聯網。服務器將不斷監聽來自客戶端的新連接。目前我正在監聽客戶端,但是一旦客戶端連接,服務器將不會繼續監聽更多客戶端。下圖描述了服務器端的代碼與一個客戶端連接:客戶機/服務器C連接
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in sockaddr, cliaddr;
bzero(&sockaddr, sizeof(struct sockaddr_in));
bzero(&cliaddr, sizeof(struct sockaddr_in));
sockaddr.sin_family = AF_INET;
sockaddr.sin_addr.s_addr = INADDR_ANY;
sockaddr.sin_port = ntohs(atoi(argv[1]));
if(bind(sockfd, (struct sockaddr *) &sockaddr, sizeof(sockaddr)) <0) {
printf("error binding socket: %d\n", errno);
exit(1);
}
printf("binded to %d : %d\n", sockaddr.sin_addr.s_addr, htons(sockaddr.sin_port));
listen(sockfd,5);
socklen_t clilen = sizeof(cliaddr);
int newsockfd = accept(sockfd, (struct sockaddr *) &cliaddr, &clilen);
if (newsockfd < 0)
error("ERROR on accept");
printf("server connected to %d:%d\n", cliaddr.sin_addr.s_addr, htons(cliaddr.sin_port));
我假設我要創建某種形式一旦連接已經建立,將叉線程。但我不知道如何實現它..
任何幫助是極大的讚賞
感謝您的回覆...將在您指出的以下幾點上查找更多 – user1317277