网络游戏《天下》 管理员手册

MudOS v21c2


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

     名称:
          socket_accept() - 接受一个 socket 的连接(connection)

     语法:
          #include 

          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)

     翻译:
          [email protected]       97.Jul.26       (printed 3/16/95)