2014-02-13 50 views
2

我想实现客户端服务器套接字应用程序在客户端发送一些数据流到服务器,并且服务器做一些计算到流并发回结果给客户。然后,规则如下:优先send()通过recv()套接字c

客户端必须尝试通过应用此策略尽可能保持服务器尽可能忙:客户端必须尽可能保持发送字节,并且必须接收较低优先级的字节(即仅在发送更多字节时是不可能的(当发送更多的字节会阻止发送过程))。我怎样才能应用这项政策。我已经用阻塞版本实现了客户端 - 服务器应用程序

+2

只是出于好奇。你为什么需要这个? – jnovacho

+2

您的客户应该能够发送和接收所有内容,并且还有大量CPU时间可用。网络可以同时向两个方向传输数据(除非您使用的是非常旧的网络),所以没有必要让一个方向等待。你的客户不需要优先考虑任何事情。 – immibis

回答

3

使用非阻塞IO。特别阅读关于选择和轮询功能。

+1

如何优先发送接收? –

+1

如果'poll'返回套接字可读可写,那么你写,然后再次调用'poll'。只有当它不可写入时才会读取(由于缓冲区已满)。 –

2

Zan Lynx的答案是最近被广泛接受的答案,但还有另一种选择:使用单独的线程进行发送和接收,并给予发送线程更高的优先级。