2011-03-31 105 views
1

我瞭解TCP/IP,我試圖用它來我的服務器上執行不同的命令。可以處理多個請求的TCP IP服務器?

我想我會從小處着手,並建立。我有一個當前運行的示例,它有一個服務器和客戶端連接,然後服務器將當前時間發送到客戶端。

現在我希望把它使得服務器可以處理多個客戶端。

我該怎麼做?我想我可以使用fork,但有沒有辦法做到這一點,而不必擔心多個進程?

有沒有對這種事情有什麼好的底漆,或者你能提供關於如何修改我的現有代碼一些指令?

感謝,

+0

看看[Beej的網絡編程指南](http://beej.us/guide/bgnet/)。 – s4y 2011-03-31 17:48:35

+0

另請參閱http://stackoverflow.com/questions/3981566/what-is-event-driven-web-server/3982440#3982440瞭解如何做到這一點的一些替代方案。 – ninjalj 2011-03-31 19:56:59

回答

1

我會建議使用線程:

  • 一個服務器線程在進入連接的服務器套接字監聽的唯一目的。一旦接收到連接,它將被傳遞給工作線程,同時服務器不斷收聽。
  • 一個或多個工作線程。這些線程將完成大部分工作。您可以選擇每個套接字使用一個線程,也可以使用select函數來允許一個線程處理多個套接字。

我不知道任何引發我的頭頂,對不起。

3

glibc Manual有一個很好的例子。缺少的代碼位可以在本章前面找到。這個例子的好處是你不需要多個線程

+0

用於'select()'的+1。 – 2011-03-31 17:31:30