此作業為 client-server 中的 server 部分. client 的部分各位不用寫, 直接用
example 即可. server 的部分有二大重點, 一為用 thread 來實作 concurrent
server, 另一為 thread pool 的管理. Server 的 main thread 大略如下:
(管理 thread pool 及印出的 code 放在何處可自行決定,
此處只是一種可能方案).
create thread pool
create listening socket
loop
thread pool maintenance:
if free theads over upper-limit, killing some
if free thread down lower-limit, adding some
newsocket = accept(.....)
find a free thread
handle newsocket to this thread for processing
print the usage of thread pool
forever
每個 thread 之流程大致如下:
loop
wait for socket
while not EOF
reading from socket
writing to socket
close socket
forever