C中非常简单的服务器

时间:2012-05-10 13:11:15

标签: c client-server

作为其中一个分配,我们必须在C中使用一些客户端实现非常简单的服务器。我们的想法是使用系统V IPC队列,我们​​创建一个客户端注册的队列,然后为每个客户端创建一个带有消息的队列。我想知道服务器部分。我应该有这样的事情:

while(1)
{
  //some queue using code
  sleep(100);
}

因此,对于每个时间间隔,我都检查每个队列并执行我必须做的事情,或者我应该使用信号通知服务器至少有一个队列已准备好进行管理。

如何在普通服务器中完成,他们是否有一段时间间隔,然后他们会检查他们需要做的所有事情,或者有更合适的方法来做这件事?

1 个答案:

答案 0 :(得分:3)

你必须按照以下方式做点什么:

这是一个非常基本的答案,需要定义和原型,但是这应该给你一个基本的选择,例如。

此代码适用于freebsd,ubuntu和我的Windows计算机(鉴于你有正确的标题)它也被缩小并删除了一些定义,作为套接字描述符defs,因为它们非常多 - 它就是它。

struct timeval timeout;
int rc
fd_set wfdset,rfdset,errfdset;
//Do some checks put them in either read fdset or write fdset or error fdset 
FD_SET (socket_sd, &rfdset);
timeout.tv_sec = 0;
timeout.tv_usec = 250 * 1000;
rc = select (maxfds + 1, &rfdset, &wfdset, NULL, &timeout);
//loop through the sockets and read from them at this point.

Select可以移植到Win32以及UNIX,但如果你在unix IE中对套接字进行任何繁重的工作,那么它不是推荐的选择:FreeBSD。如果你需要更深入并更好地管理插座,可以使用kqueue或epoll等。