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

How to call a function in a C server from a client

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

提前致谢。

在服务器上创建套接字侦听器并等待客户端连接。
当客户端向您发送内容时,解析它并做出适当的操作。

例如:

/* 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() 来解析来自套接字缓冲区的命令。