自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 资源 (2)
  • 收藏
  • 关注

原创 select socket相关

<br /><br />1.socket缓冲满了,就会将数据复制到内核缓冲向目标发送,然后socket缓冲又可以再接收更多数据,如果内核缓冲向目标发送数据速度很快(马上完成,不存在网络阻塞等),那么从socket缓冲复制数据到内核缓冲,内核缓冲向目标发送,socket缓冲被清空再接收更多数据这个动作不存在“阻塞”的话,那么就算发送更多数据也不会返回WSAWOULDBLOCK,内网一般是100Mbps,延迟小于10ms,不会出现数据阻塞情况一点不奇怪,内网传输数据能到达10MB/S的速度呢。<

2011-01-28 14:21:00 1087

原创 Linux网络编程 -- select/epoll得知socket有数据可读,如何判断数据全部被读取完毕?

补充一点:只有在使用epoll ET(Edge Trigger)模式的时候,才需要关注数据是否读取完毕了。使用select或者epoll的LT模式,其实根本不用关注数据是否读完了,select/epoll检测到有数据可读去读就OK了。<br /> <br />这里有两种做法:<br /> 1. 针对TCP,调用recv方法,根据recv方法的返回值,如果返回值小于我们指定的recv buffer的大小,则认为数据已经全部接收完成。在Linux epoll的manual中,也有类似的描述:<br />

2011-01-28 14:21:00 10053

原创 多线程服务器的常用编程模型

<br />这篇文章原本是前一篇博客《多线程服务器的常用编程模型》(以下简称《常用模型》)计划中的一节,今天终于写完了。<br />“服务器开发”包罗万象,本文所指的“服务器开发”的含义请见《常用模型》一文,一句话形容是:跑在多核机器上的 Linux 用户态的没有用户界面的长期运行的网络应用程序。“长期运行”的意思不是指程序 7x24 不重启,而是程序不会因为无事可做而退出,它会等着下一个请求的到来。例如 wget 不是长期运行的,httpd 是长期运行的。<br />正名<br />与前文相同,本文的“进

2011-01-07 14:12:00 1715

原创 使用多线程编程的几个常见问题

<br />、工作线程还是用户界面线程?<br />对于一个多线程编程高手来说,没有两难的选择,因为不论工作线程还是用户界面线程,其本质是完全相同的。所不同的只是用户界面线程为用户增加了消息循环机制,而使用工作线程,你自己也很容易能做到这点。由于增加了消息队列,用户界面线程可以与窗口类协同工作,并方便地使用各类消息处理;但相对工作线程要占用更多的系统资源,对于一个使用大量线程的应用,你在使用线程前还是得考虑一下选择使用哪种线程。<br />对于没有界面交互的后台工作而言(打印,存盘,收发网络信息),使用工作

2011-01-04 18:43:00 3467

c++标准库——boost程序库导论.chm

c++标准库——boost程序库导论,Boost带领你远远地超越了C++标准库,它使得C++编程更优雅、更有活力、更高产。首先,我们系统地介绍一下Boost库的主要组成和它们的主要用法。

2009-12-30

C++笔试题,华为方面的

C++笔试题,华为方面的,C++笔试题,华为方面的,

2008-09-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除