我正在编写一个服务器端客户端编程在C中使用套接字API,我试图发送控制信息到客户端使用不同的TCP连接。 每当服务器创建新的套接字(TCP)时,我都希望它通知客户端使用新的套接字进行进一步的通信。目前我曾想过发送UDP数据包给客户端以通知。一旦客户端收到数据包,就会将ACK发送回服务器,同时切换到另一个TCP连接。 我想知道,除了使用UDP之外,还有更好的方式来通过网络传输控制数据,因为它是不可靠的.Thnx传递在客户端服务器之间的套接字编程客户端服务器C
我想阐述一下我试图实现的目标。我将测量带宽,延迟,接收窗口等参数作为Ipv4和IPv6 TCP连接的度量标准。基于观察到的性能,我将在提供更好性能的两个协议之间切换。一旦决定切换,我必须通知合作伙伴(可能是基于我正在测量的上传,下载的带宽类型的客户端或服务器) 。我从IPv4连接开始,同时打开另一个连接 - 测量带宽和延迟的IPv6。
如果IPv6连接提供更好的性能,我需要告诉客户端切换到IPv6。在这种情况下,两个连接都打开以便周期性地监视带宽以决定切换。所以我在这方面有两个疑问。 1.一次保持两个连接是一个好主意。只有当我需要测量度量时,我才能创建另一个连接,因为两台机器之间的路径几乎不会改变。如果是,我可以使用控制信息另一个TCP连接告诉客户端进行切换。这样我也可以测量带宽并通知客户端
两个有两个TCP连接是不是一个好主意,我可以用UDP发送控制信息。我正在避免发送用于传输实际数据的conn的控制信息,因为这将是一个开销。我的代码将像中间件一样传输数据,其中应用程序将调用我的函数/宏来传输数据,而内部代码将负责测量带宽和切换的决定。我希望我明白我的要实现。提前感谢您的反馈
服务器在切换之前如何与客户端进行通信?他们是否已经有一个现有的TCP连接?也许你应该更多地解释架构 - 这个问题留下了很多想象。 如果你已经有了一个开放的TCP连接,你可以使用它进行通信。如果你正在和一个你以前没有见过的新客户交谈过,UDP可能会工作,但是为了应对不可靠性,考虑等待ACK,如果没有在几秒钟内收到,重新发送它。 – mgiuca 2010-12-06 03:16:18
听起来像重新实现FTP协议? – 2010-12-06 03:45:58