首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

epoll + socket接收数据长度有关问题

2014-01-09 
epoll + socket接收数据长度问题Hi,我现在使用epoll + sockek实现一个RPC的调用,发送和接收都是用一个whil

epoll + socket接收数据长度问题
Hi,我现在使用epoll + sockek实现一个RPC的调用,发送和接收都是用一个while循环来实现的。
想要实现的是:发送端发送数据时,在包头里加上数据包长度,接收端可以先解析出来包头,知道具体要接收的数据大小,申请空间,供后面接收数据使用。
现在的问题是,我可以把包头+数据作为一个包发送出去,接收端要怎么接收解析包头呢?比如接收端每次接收的长度为1024*4字节,接受一次后可能包头和数据都接收到了,怎么才能只接收包头呢?
本人刚接触socket,希望各位大侠多多指点,谢谢!
[解决办法]
发送端把包头+数据一次性发送,接收端仍然可以分多次接收,第一次收包头,根据包头中数据大小收数据
至于缓冲区,可以用很多办法,比如可以在一个连接中使用同一个缓冲区,接收数据大于该缓冲区的时候就realloc缓冲区;更进一步就可以不释放这些缓冲区,而是在连接结束的时候放入缓冲区池,需要缓冲区的时候先从缓冲区池获取。。。
[解决办法]
查一下MSG_PEEK。

热点排行