socket_release(3) MudOS (5 Sep 1994) socket_release(3)
名称:
socket_release() - 释放一个 socket 的所有权(ownership)给另一
物件。
语法:
#include
int socket_release( int socket, object ob,
string release_callback );
整数 socket_release( 整数 socket, 物件 ob,
字串 release_callback );
用法:
socket_release() 是用来改变原先处理连接设定(set-up)之物件的
所有权(和控制权)并且转移一个已连接(connected)的 socket 给
另一物件以供未来之用。
socket 所有权的转移包括了一个目前拥有所有权物件和这个物件想
转移 socket 的物件间的握手程序(handshake)。这个握手程序是由
呼叫 socket_release() 开始的。socket_release() 经过安全性、
完整性(integrity)检查後,再呼叫物件 ob 的 release_callback
函式。这个函式是用来通知 ob socket 所有权将要转移给它。然後
ob 有责任在释放回呼(callback)函式中呼叫 socket_acquire()。如
果呼叫了 socket_acquire(),握手程序就完成了,而 socket 所有
权就已经成功地转移给 ob。ob 也可以不呼叫 socket_acquire() 而
婉谢接受这个 socket 的责任,此时,所有权不会改变,而且原来的
socket 所有者必须决定如何回应这个情况。
如果 socket 所有者成功地转移,则 socket_release() 会传回
EESUCCESS。如果 ob 不接受这个 socket 的所有权的话,则会传回
EESOCKNOTRLSD。其他基於违反安全、错误的 socket 描述值(descriptor)
等的错误码也可能传回。
参照:
socket_acquire(3)
翻译:
[email protected] 97.Jul.27 (printed 3/16/95)