我在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