-2
我在C中創建了一個將結構添加到文件中的應用程序,現在我想讓它通過套接字工作,使得客戶端要求用戶提交結構,然後服務器將其保存在文件中,以保存客戶端執行的每個操作(添加,刪除,搜索等)的日誌文件。我怎樣才能做到這一點?也有可能從客戶端調用駐留在服務器中的函數嗎?如何從客戶端調用C服務器中的函數
在此先感謝。
我在C中創建了一個將結構添加到文件中的應用程序,現在我想讓它通過套接字工作,使得客戶端要求用戶提交結構,然後服務器將其保存在文件中,以保存客戶端執行的每個操作(添加,刪除,搜索等)的日誌文件。我怎樣才能做到這一點?也有可能從客戶端調用駐留在服務器中的函數嗎?如何從客戶端調用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()從套接字緩衝區解析命令。
您似乎建議您想要在運行時修改源代碼(可以完成)_then_在同一個運行時進程中可以訪問這些修改,從而使源發生更改(您不能)。這需要中間構建,並啓動新流程。這將是這個*** [藝術家]的概念性軟件版本(http://en.wikipedia.org/wiki/M._C._Escher)*** – ryyker 2015-03-30 18:51:59