如何从客户端调用 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() 来解析来自套接字缓冲区的命令。
我用 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() 来解析来自套接字缓冲区的命令。