异步套接字的API设计问题

时间:2014-03-15 09:15:37

标签: c++ networking

我正在编写一个线程安全的异步网络库。

我正在考虑API设计。库的用户希望编写尽可能少的代码。

哪种语义更正确?

1

a)open() - 同步,打开套接字。

b)connect(IP, port) - 异步,连接套接字。

c)close() - 同步,关闭套接字。

2

a)open(IP, port) - 异步,打开并连接套接字。

b)close() - 同步,关闭套接字。

将“已打开”状态视为“已连接”状态在语义上是否正确。这与低级网络库不同,其中“打开”和“连接”是独立的状态。

此外,如果出现错误(打开,连接,读取,写入时),套接字是否应执行资源清理并将其自身恢复到关闭状态?或者,如果套接字进入“错误”状态并要求库的用户执行close()

0 个答案:

没有答案