Web应用程序和C应用程序之间的通信?Web服务?

时间:2015-04-03 10:14:33

标签: c web-services web

我正在尝试开发一个使用来自c应用程序的输入的Web应用程序,我不知道如何在两个应用程序之间发送和接收消息。

我认为Web服务是解决方案,但我不了解适合我需求的技术。

任何人都可以向我提供一些信息或有用的教程吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用套接字使用tcp / ip连接。在c中的服务器和套接字客户端写套接字监听器,它使用套接字将一些数据发送到服务器。这是如何从客户端向服务器发送内容的简单示例

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <signal.h>

void cleanup(int sig)
{
    printf("\nCleanup on exit\n");
    exit(0);
}

int create_socket(uint16_t port)
{
    /* Used variables */
    int sock;
    struct sockaddr_in name;

    /* Create the socket. */
    sock = socket (AF_INET, SOCK_STREAM, 0);
    if (sock < 0)
    {
        perror("socket");
        exit(EXIT_FAILURE);
    }

    /* Give the socket a name. */
    name.sin_family = AF_INET;
    name.sin_port = htons (port);
    name.sin_addr.s_addr = htonl (INADDR_ANY);

    /* Connect socket */
    if (connect(sock, (struct sockaddr *) &name, sizeof(name)) < 0)
    {
        perror("Connect");
        exit(EXIT_FAILURE);
    }

    return sock;
}

int send_command(int sock, char *cmd) 
{
    /* Used variables */
    char command[128];
    int ret;

    /* Null-terminate command */
    bzero(command, 128);

    /* Create command */
    sprintf(command, "%s bla bla \n", cmd);

    /* Send  */
    ret = send(sock, command, strlen(command), 0);
    if (ret < 0) return 0;
    else printf("Command: %s\n", command);

    return 1;
}

int main(int argc, char *argv[])
{
    /* Used variables */
    int socket, ret;

    /* Catch signals */
    signal(SIGINT, cleanup);

    /* Print usage if there is no given argument */
    if (!argv[1])  
        printf("Usage: %s <command>\n", argv[0]);

    /* Create socket with server listener port */
    socket = create_socket(5544);

    /* Send commant to server */
    ret = send_command(socket, argv[1]);

    /* Check and print status */
    if (ret) printf("Command sent\n");
    else printf("Can not send command\n");

    return 0;
}

我评论了代码中的每一行对你有用

答案 1 :(得分:0)

您可以使用Web套接字进行Web应用程序和c应用程序之间的通信。 请参阅https://github.com/warmcat/libwebsockets