在同一个while循环中接受用户输入和传入连接

时间:2015-10-12 14:27:57

标签: c sockets

我在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);

问题是此功能的行为不符合预期。当我取消接受调用的代码时,正确处理用户输入。有人可以告诉我如何重组这段代码以使两者协同工作。

1 个答案:

答案 0 :(得分:0)

理解网络互动的一个很好的基本示例在glibc文档中,一个用于server,另一个用于client