我在C中编写一个基于套接字的应用程序,需要接受用户输入并根据它们执行各种任务。该程序还打开一个服务器,需要等待传入的连接。
这是执行此部分的代码,
while(1)
{
if((sockClient = accept(sockServer, (struct sockaddr*)&client, (socklen_t *)&len)) == -1)
{
perror("Accept failed: ");
exit(-1);
}
else
{
send(sockClient, msg, strlen(msg), 0);
printf("Connected to client : %s\n", inet_ntoa(client.sin_addr));
}
......
......
}
现在处于相同的无限循环中,我需要接受用户输入并相应地处理它们。这是执行此操作的代码。
char usrInputStr[256];
printf("Enter Instruction: ");
scanf ("%[^\n]%*c", usrInputStr);
memcpy(cmdHist[histCount], usrInputStr, strlen(usrInputStr));
histCount++;
char** currentTokens = (char**)malloc(sizeof(char*)*256);
for(int i=0; i<256; i++)
{
currentTokens[i] = (char*)malloc(sizeof(char)*256);
}
processInstruction(usrInputStr, currentTokens);
问题是此功能的行为不符合预期。当我取消接受调用的代码时,正确处理用户输入。有人可以告诉我如何重组这段代码以使两者协同工作。