我在C和Linux中实现了TCP套接字服务器。它将是一个同时处理多个请求的聊天服务器。下面是它是如何设置C/Linux TCP套接字服务器
create a socket
bind to a well-known port
use listen to place in passive mode
while (1)
{
accept a client connection
fork
if (child)
{
communicate with new socket
close new socket
exit
}
else
{close new socket}
}
从我所看到的伪代码中,“新窝沟通”部分包括读取缓冲区,然后可能写入缓冲区,然后插座关闭。我认为套接字被认为是一个持久的连接?如果客户端每次想要向服务器发送更多数据时都必须重新连接,这是否是低效的并且会影响套接字的目的?
是你的功课吗? – 2012-02-07 10:36:41
你应该使用诸如libevent或libev之类的事件库。 – 2012-02-07 11:42:42
您不需要为每个客户端“分叉”。你很可能需要一个围绕多路复用系统调用的事件循环,比如'select'或'poll'(或者一个带有事件循环的库,比如'libev'或'libevent'或者别的东西;并且这个库会执行多路复用)。 – 2012-02-07 12:30:04