     socket_accept(3)       MudOS (5 Sep 1994)        socket_accept(3)

     名稱：
          socket_accept() - 接受一個 socket 的連接(connection)

     語法：
          #include <socket_err.h>

          int socket_accept( int s, string read_callback,
                             string write_callback );

          整數 socket_accept( 整數 s, 字串 read_callback,
                              字串 write_callback );

     用法：
          參數 s 是一個已用 socket_create(3) 建立、用 socket_bind(3)
          指定了一個位址，並且正傾聽(listen)在 socket_listen(3) 之後
          連接的 socket。socket_accept() 從未處理(pending)的連接序列
          中選取第一個連接，建立一個和 s 相同屬性的新 socket 並且配
          置一個新的描述值(descriptor)。如果在序列中沒有未處理的連接
          ，socket_accept() 會傳回如後面會提到的錯誤值。這個被接受的
          socket 將被用來從相連的另一端讀寫資料；它不能用來接受別的
          連接。原先的 socket s 則保持開啟以接受未來的連接。

          read_callback 這個參數是給驅動程式在一個新的 socket（不是正
          要接受的 socket）接收資料時呼叫的函式名稱。這個讀取回呼函式
          (callback)應該是下列格式：

               void read_callback(int fd)

          這裡的 fd 是準備接收資料的 socket。

          write_callback 這個參數是給驅動程式在新的 socket（不是正要
          接受的 socket）準備好寫入時呼叫的函式名稱。這個寫入回呼函式
          應該是下列格式：

               void write_callback(int fd)

          這裡的 fd 是準備好寫入的 socket。

          注意：如果新 socket 不正常關閉，譬如和 socket_close(3) 的呼
          叫結果不同的話，則會呼叫正要接受的 socket（不是新的 socket）
          的 close_callback。這個關閉回呼函式應該是如下格式：

               void close_callback(int fd)

          這裡的 fd 是已關閉的 socket。

     傳回值：
          socket_accept() 在成功時會傳回一個對於已接受 socket 的非
          負數描述值。失敗時，它傳回一個負值。socket_error(3) 可以
          用來得到這個錯誤碼的文字敘述。

     錯誤值：
          EEFDRANGE      描述值超出範圍。

          EEBADF         無效的描述值。

          EESECURITY     企圖違反安全。

          EEMODENOTSUPP  不支援此 socket 型態。

          EENOTLISTN     socket 不在傾聽中。

          EEWOULDBLOCK   操作將被停滯(block)。

          EEINTR         中斷的系統呼叫。

          EEACCEPT       接受問題。

          EENOSOCKS      沒有多餘的 efun sockets。

     參照：
          socket_bind(3), socket_connect(3), socket_create(3),
          socket_listen(3)

     翻譯：
          Kenny@Broken.History       97.Jul.26       (printed 3/16/95)
