我在用C套接字完成我的程序时遇到问题。这是一个基本的“猜数字”游戏。问题是,一旦数字被正确猜测,客户端控制台不会输出任何它应该(“你赢了”和“继续猜测下一个数字”)。从Client.c
多用户用套接字猜数字游戏,使用C
示例代码:
while (1) {
bzero(buffer,BUF_SIZE);
scanf("%s", &buffer);
send_line(sockfd, buffer);
if (strcmp(buffer, "quit") == 0)
break;
recv_line(sockfd, buffer);
printf("Server: %s\n", buffer);
if (strcmp("Bingo!", buffer) == 0) {
printf("You won!!");
recv_line(sockfd, buffer);
printf("Server: %s\n",buffer);
printf("Keep on guessing next number!\n");
}
}
示例代码Server.c
:
while (1) {
recv_line(new_fd, buffer);
printf("%s\n",buffer);
if (strcmp(buffer, "quit") == 0) {
printf("Client '%s' quit.\n", name);
break;
}
if (atoi(buffer) >lol){
send_line(new_fd,"number too big!");
}
if (atoi(buffer) <lol){
send_line(new_fd,"number too small!");
}
if (lol== atoi(buffer)){
send_line(new_fd, "Bingo!");
printf("Client '%s' guessed correctly!\n ", name);
printf("Enter new number fo user '%s'!\n", name);
scanf("%d", &lol);
send_line(new_fd, "New number generated!");
}
}
}
也:
void send_line(int new_fd, char * buffer) {
int len = strlen(buffer);
if (send(new_fd, buffer, len, 0) == -1) {
perror("send");
exit(1);
}
}
void recv_line(int new_fd, char * buffer){
int len;
if ((len = recv(new_fd, buffer, BUF_SIZE, 0)) == -1){
perror("recv");
exit(1);
} else
buffer[len] = '\0';
}
我怎样才能使这项工作在用户猜中后?
printf(“Serveris:%s \ n”,buffer)的输出是什么?偶然的缓冲区是否包含换行符?尝试printf(“Serveris:**%s ** \ n”,缓冲区),以便知道如果从服务器发送的任何内容到达客户端,您测试的缓冲区 –
的确切内容是什么? – knightrider
什么是recv_line?和send_line。你使用调试器来观察发生了什么? – pm100