当前位置:  技术问答>linux和unix

epoll + socket接收数据长度问题

    来源: 互联网  发布时间:2017-05-07

    本文导语:  Hi,我现在使用epoll + sockek实现一个RPC的调用,发送和接收都是用一个while循环来实现的。 想要实现的是:发送端发送数据时,在包头里加上数据包长度,接收端可以先解析出来包头,知道具体要接收的数据大小,申...

Hi,我现在使用epoll + sockek实现一个RPC的调用,发送和接收都是用一个while循环来实现的。
想要实现的是:发送端发送数据时,在包头里加上数据包长度,接收端可以先解析出来包头,知道具体要接收的数据大小,申请空间,供后面接收数据使用。
现在的问题是,我可以把包头+数据作为一个包发送出去,接收端要怎么接收解析包头呢?比如接收端每次接收的长度为1024*4字节,接受一次后可能包头和数据都接收到了,怎么才能只接收包头呢?
本人刚接触socket,希望各位大侠多多指点,谢谢!

|
发送端把包头+数据一次性发送,接收端仍然可以分多次接收,第一次收包头,根据包头中数据大小收数据
至于缓冲区,可以用很多办法,比如可以在一个连接中使用同一个缓冲区,接收数据大于该缓冲区的时候就realloc缓冲区;更进一步就可以不释放这些缓冲区,而是在连接结束的时候放入缓冲区池,需要缓冲区的时候先从缓冲区池获取。。。

|
查一下MSG_PEEK。

    
 
 

您可能感兴趣的文章:

  • epoll 并发接收数据丢失问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用EPOLL时发送数据的问题
  • linux底下epoll模型服务端写数据到客户端?
  • epoll中epoll_event结构体的含义
  • epoll_ctl(,EPOLL_CTL_DEL,); 的问题!!!
  • 第一次用epoll就傻眼,程序报create_epoll error Function not implemented
  • linux和unix iis7站长之家
  • 请问: 当服务器采用epoll 时,客户端连不上,但若服务器端不用epoll时,也连上并发消息,这是为什么啊
  • epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event)为何老返回-1
  • epoll 退出
  • 关于epoll的几个疑问
  • 大家好,问个问题,关于EPOLL的。。。
  • epoll并发问题
  • 有人碰到过epoll丢信号吗
  • epoll异常问题
  • epoll模型如何限制最大连接数
  • epoll可读的问题
  • python实现Linux异步epoll代码
  • epoll多路复用模型的疑惑,请高手解答
  • epoll,socket超时如何设置?
  • epoll的一个问题
  • linux并发服务器中epoll+多线程分别怎么理解?
  • 关于epoll的链接库


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,