Rob*_*nes 8 sockets network-programming tcp network-protocols sctp
SCTP具有本机多宿主支持,如果我理解正确,将在主接口关闭时通过辅助NIC自动重新路由您的数据包.我通过编写自定义路由守护程序来复制此功能,以便在主NIC发生故障时修改路由表.我想尝试使用SCTP.
在Steven的Unix网络编程V1第3版第288页中,它说:
对于此示例,我们使用一对多样式的服务器.我们做出这个选择有一个重要原因.可以修改第5章中的示例以通过
SCTP一个小的更改来运行:修改socket函数调用以指定IPPROTO_SCTP而不是IPPROTO_TCP作为第三个参数.但是,简单地进行此更改不会利用SCTP除多宿主之外提供的任何其他功能.
现在我尝试了相当差的结果.
我正在使用安装了libsctp1,libsctp-dev和lksctp-tools软件包的Ubuntu 9.04上运行.我已经使用SCTP正常工作的lksctp-tools进行了验证.  
我拿了UNP示例代码并修改了如上所示~/unpv13e/tcpcliserv/tcpserv04.c和~/unpv13e/select/tcpcli02.c程序.
这是一个简单的echo服务器/客户端对.服务器运行显然正在侦听,但客户端退出说连接被拒绝.由于netstat不支持SCTP我使用的lsof -n | grep tcpserv显示我:
tcpserv04 6208      alice    3u     sock        0,4            33889 can't identify protocol
除了tcpserv04有某种套接字打开之外,这似乎并没有告诉我什么.
我已经重新编写并测试了perl中的原始TCP客户端,所以我将其切换到sctp并且能够连接虽然在stdin上管道文件没有完全正常工作(通过接收回声的回来挂了大约2/3) .
似乎UNP暗示将TCP应用程序移植到SCTP以利用多宿主是微不足道的,但基于这种简单的尝试似乎并非如此.
任何人都可以指点我一个好的教程,或者在将TCP应用程序移植到一对一风格的SCTP以利用多宿主的时候注意任何问题吗?
tcpcli02尝试连接到端口 7,同时tcpserv04侦听端口 9877(默认值SERV_PORT)。更改它们以匹配之后,它对我有用。
一般来说,对 SCTP 的支持非常差。除非您控制要连接的主机之间的整个网络基础设施,否则我不会指望它可靠地工作。正如 UNP 中提到的,移植应用程序本身应该相当轻松。
| 归档时间: | 
 | 
| 查看次数: | 2524 次 | 
| 最近记录: |