如何从客户端调用C服务器中的函数

时间:2015-03-30 18:44:31

标签: c linux sockets client server

我在C中创建了一个应用程序,它将结构添加到文件中,现在我想让它通过套接字工作,使客户端要求用户提交结构的字段,然后服务器将其保存在文件中保存客户端所做的每个操作的日志文件(添加,删除,搜索等)。我怎样才能做到这一点?还可以从客户端调用驻留在服务器中的函数吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

在服务器上创建套接字侦听器并等待客户端连接 当客户端向您发送内容时,请对其进行解析并执行相应的操作。

例如:

/* Create the socket and listen to cennections */
sock = create_socket(port);
if (listen(sock, 1) < 0)
{
    perror("listen");
    exit(EXIT_FAILURE);
}

/* Never end loop for socket listen */
while(1) 
{
    /* Accept socket */
    newsock = accept(sock, (struct sockaddr *) &peer, &len);

    /* dump_sockaddr (peer, len); */
    if (newsock >= 0) 
    {
        /* Null-terminate socket buffer */
        bzero(buf, MAXMSG);

        /* Read from socket */
        ret = read(newsock, buf, sizeof(buf));
        if (ret > 0) 
        {
            printf("Recieved command: %s\n", buf);

            /* Parse command from buffer */
            if (strstr(buf, "deletesomethig") != NULL) 
            {
                /* Make the appropriate action */
                delete_something();
            } 
            else if (strstr(buf, "stopsomething") != NULL) 
            {
                /* Make the appropriate action */
                stop_something();
            }
            else 
                 printf("Recieved unsupported command: %s\n", buf);

            /* Close socket */
            close(newsock);
        }
    }
}

/* Close socket */
close(sock);

请确保strstr()没有内存问题。这是一个简单的例子,您可以使用sscanf()来解析来自套接字缓冲区的命令。