原文转自:http://hi.baidu.com/doodlezone/item/4d7cfdabae3e3cf115329bc2
五、 接口描述
方法名
socket方法
功能
用于创建一个新的socket
详细接口
UDTSOCKET socket(
int af,
int type,
int protocol
);
返回值
成功:返回socket描述符
错误:返回UDT::INVALID_SOCK
描述
type:指SICK_STREAM或SOCK_DARAM
protocol:忽略
af:AF_INET(IPv4)或者AF_INET(IPv6)
UDT支持IPv4和IPv6可以通过af参数选择。
方法名
accept方法
功能
用于接收一个进来的连接
详细接口
UDTSOCKET accept(
UDTSOCKET u,
struct sockaddr* addr,
int* addrlen
);
返回值
成功:返回新连接的描述符
错误:返回UDT::INVALID_SOCK
描述
当一个UDT socket处于监听状态,它将接收到的连接存放在一个队列里,一个accept调用会依次从队列里首先取出对头的连接,并将其移出队列。
当队列里没有连接请求时,一个阻塞式的socket就会等待下一个连接,遇到错误时会有一个非阻塞式的socket立即返回。
接收到的socket会继承监听socket的属性。
方法名
bind方法
功能
用于绑定一个端口
详细接口
int bind(
UDTSOCKET u,
struct sockaddr* name,
int* namelen
);
int bind(
#ifndef WIN32
int udpsock
#else
SOCKET udpsock
#endif
);
返回值
成功:返回0
错误:返回UDT::ERROR
描述
绑定内容包括IP地址和端口,如果设置了INADDR_ANY,则表示0.0.0.0任意地址(多网卡时),当端口使用0则会使用一个随机的可用端口,用getsockname可以获得端口号,另一种方式UDT允许绑定在已存在的UDP端口(前面已写)此时需注意代码的健壮性,一旦UDP描述符被UDT使用,不要再随便使用除非你对系统非常了解。
绑定过程是必须的,除了在监听下,如果没有绑定,UDT会自动随机绑定一个地址
方法名
cleanup方法
功能
用于释放UDT库
详细接口
int cleanup(
);
返回值
成功:返回0
错误:返回UDT::ERROR
描述
当它被调用有如下两个操作:1,所有存在的打开的连接都会被关闭
2,后台垃圾回收也被关闭。
这个方法有效的前提是:startup方法在之前调用。
方法名
startup方法
功能
用于初始化UDT库
详细接口
int startup(
);
返回值
成功:返回0
错误:返回UDT::ERROR(此版本总会成功)
描述
初始化库,开启垃圾回收线程,必须在所有UDT调用之前调用它,否则会造成内存泄露。
若多次调用则只有第一次有效。
方法名
close方法
功能
用于关闭一个UDT连接
详细接口
int close(
UDTSOCKET u
);
返回值
成功:返回0
错误:返回UDT::ERROR
描述
它温和地关闭UDT连接并释放有关的数据结构,如果没有连接,则只释放与socket相关的资源。
在阻塞方式下,如果UDT_LINGER设为非0,则会等待发送缓存发送完或者时间到。非阻塞下立即关闭。
关闭socket会发送一个关闭消息给另一端,通知其关闭连接,如果没有成功传送,对方也会在一个TIME_OUT的时间后关闭。
不用的socket都应该被关掉。