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

标签 c linux sockets client server

我用 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() 从套接字缓冲区解析命令。

关于c - 如何从客户端调用 C 服务器中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29353799/

相关文章:

Linux crontab 不执行?

java - 如何测试非阻塞 channel 的 SocketChannel.read() 是否已完成?

我可以在C语言中对一个文件描述符调用两次shutdown吗?

python - 关闭打开的连接以允许下一个调用通过

c - 允许 ((int *)p)++ 的任何 gcc 选项

c - Scanf 无法正确读取包含初始 0 的输入

c - 倒带文件后真的很奇怪的段错误

linux - Wordpress 主题的符号链接(symbolic link)

linux - 没有这样的模块 'PerfectLib'

c - 扫描字符然后在 IF 语句中使用它们? (如果 char= ='c' ){} 等