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

使用EPOLL时发送数据的问题

    来源: 互联网  发布时间:2016-12-31

    本文导语:  EPOLL发送数据为什么总是无法完整发送呢? EPOLL ET模式,socket为非阻塞 服务器需要发送一个很大的包时,会把包拆分为很多小包,然后一个一个发.发送的过程中有时候会出现EAGAIN错误.出现这个错误了怎么处理?引起这个错...

EPOLL发送数据为什么总是无法完整发送呢?
EPOLL ET模式,socket为非阻塞
服务器需要发送一个很大的包时,会把包拆分为很多小包,然后一个一个发.发送的过程中有时候会出现EAGAIN错误.出现这个错误了怎么处理?引起这个错误的小包是发过去了还是没发过去?
有没有人能给一个EPOLL的使用示例?感激不尽.

|
不仅仅是返回-1,返回的字节数小于你发送的字节数,也应该设置EPOLLOUT。

|
EAGAIN就是EWOULDBLOCK,说明缓冲区满了,这时候你就应该给这个套接字设置EPOLLOUT,等到该套接字EPOLL返回可写的时候写出剩下的数据。

|
EAGAIN不要把它看成错误。只是表明当前数据操作无法完成,你需要你重试。

|
原理是这样的,你需要实现tcp_send函数,它首先检查该套接字tcpbuffer,如果内部有数据,则将这次的package拷贝到buffer末尾,然后返回。 如果tcpbuffer没有数据,则直接调用send发送该package,并判断实际送出字节,如果实际送出字节

    
 
 

您可能感兴趣的文章:

  • 使用udp,连续发送大数据发生丢包亲情况
  • 使用tcp协议发送数据, 如果获得系统底层将包发到客户端之间的耗时?
  • 如何在java 客户端使用http将cookies 信息发送给服务端.
  • 请问使用SELECT()函数怎么监测串口发送数据?
  • 如何使用ip_queue_xmit接口发送数据包
  • 使用原始套接字来发送一个icmp包,不适用setsockopt做控制会怎么样?
  • 客户端服务端使用socket通信的send/write最大发送多少?
  • 谁能讲讲网页发手机短信的原理?使用applet发送的吗?
  • 使用perl发送带有附件的电子邮件是什么原理呀?不带附件得我已经发送成功了,希望指点
  • 为什么sendmail不能使用outlook发送邮件??? help!!!!!
  • 如何使用jsp发送邮件
  • 怎样使用javamail发送带有html格式信息的文件
  • 可以使用shell编程完成发送邮件的功能吗?
  • redhat 9下面装了postfix,但怎么使用阿.怎么用它来发送邮件?
  • python使用PyFetion来发送短信的例子
  • 请问RST在什么情况下发送?? 使用TCP socket编程的话是否会引起这种TCP包的发送?
  • 关于在solaris10下使用sendmail发送邮件没有主题的问题?
  • java使用短信设备发送sms短信的示例(java发送短信)
  • 局域网共享上网,使用nat时在postrouting中添加masquerade规则允许往外发送,prerouting是不是也要添加规则。
  • c#使用netmail发送邮件的例子
  • 在Python3中使用urllib实现http的get和post提交数据操作
  • 大家在UNIX下都使用什么数据库?使用什么做数据开发?
  • mysql数据库下载安装教程和使用技巧
  • 如何使用jsp显示数据库中的数据?
  • mongodb 数据库常用命令使用实例
  • 请教高高手:如何规划和创建数据池?并使用数据池?有资料也行
  • 请教在linux系统开发环境下,有没有db和dbf数据库引擎,如何使用这个数据库?
  • 使用php语句将数据库*.sql文件导入数据库
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • UNIX下面能否使用类似BCP的程序连接另一台UNIX下面的Sybase数据库进行数据处理
  • 使用jquery局部刷新(jquery.load)从数据库取出数据
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • asp程序使用的access在Linux下如何使用!
  • c/c++预处理命令预#,##使用介绍
  • 新装的Linux使用root用户不能使用FTP?
  • 在div中使用css让文字底部对齐的方法
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • Python namedtuple(命名元组)使用实例
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3