我想開發一個使用c應用程序的一些輸入的web應用程序,我不知道如何發送和接收兩個應用程序之間的消息。Web應用程序和C應用程序之間的通信?Web服務?
我認爲web服務是解決方案,但我不知道適合我需求的技術。
任何人都可以提供一些信息或有用的教程嗎?
在此先感謝。
我想開發一個使用c應用程序的一些輸入的web應用程序,我不知道如何發送和接收兩個應用程序之間的消息。Web應用程序和C應用程序之間的通信?Web服務?
我認爲web服務是解決方案,但我不知道適合我需求的技術。
任何人都可以提供一些信息或有用的教程嗎?
在此先感謝。
您可以使用套接字使用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;
}
我評論了每一行代碼以對您有用
您可以使用網絡插座,用於Web應用程序和C應用程序之間的通信。 請參考https://github.com/warmcat/libwebsockets
謝謝你的回答,我會試試看。 有沒有辦法讓服務器詢問客戶端,然後客戶端給出他的答案? – 2015-04-03 11:49:20
是的,客戶端可以使用accept()函數接受套接字並從服務器接收數據。 accept()爲傳入數據返回新的套接字,並且如果將有來自服務器的響應,您可以讀取該套接字上的緩衝區。 – 2015-04-03 11:59:28