【问题标题】:Decrease time transfer between sockets in C减少 C 中套接字之间的时间传输
【发布时间】:2013-12-26 04:12:29
【问题描述】:

我正在使用 C 在 CentOS 上编程。我必须从客户端向服务器发送 3,000,000 个数字,并在服务器中以尽可能短的时间打印每个数字。现在需要 32 秒,但时间最多必须是 20 秒。在服务器中打印 3,000,000 个数字需要 16 秒,所以我认为丢失的时间是因为传输。我的程序的代码片段:

服务器:

...
while(read(socket,&num,4)>0)
   printf("%i ",num);
...

客户:

...
for(i=1;i<=3000000,i++)
   write(clientSocket,&i,4);
...

知道如何解决这个问题吗?

谢谢。

【问题讨论】:

  • 个人资料,个人资料,个人资料。在这种情况下,我可以自信地预测大部分时间将用于printf,其余时间将用于readwrite 调用,但不要相信我的话。加速二进制到十进制的转换很困难,但假设这是环回或本地以太网,如果你读写 1024 字节块而不是一个 4 字节整数,数据传输时间应该至少减少一半一次。
  • 以更大的块写入和读取套接字。系统调用很昂贵。看看这是否有帮助。
  • 你创建了什么类型的套接字? udp 还是 tcp?
  • 另外,服务器中的stdout指向什么,一些文件?
  • 非常感谢大家!我已经解决了这个1000字节块的读写问题,现在是17秒,比20秒的限制还少。

标签: c sockets printf


【解决方案1】:

我已经解决了这个以1000字节为单位写入和读取的问题,时间现在是17秒,比20秒的限制还少。 ——理查德

【讨论】:

  • 加个答案的好处是,也许问题可以实现结案,但是既然只有OP能接受答案,而且OP已经两年多没见了,什么机会都没有有益的事情是有限的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多