- 博客(8)
- 收藏
- 关注
原创 linux 下获得本机的ipv6地址
<br />#include <stdio.h><br /><br />#include <stdlib.h><br />#include <string.h><br />#include <sys/socket.h><br />#include <arpa/inet.h><br />#include <net/if.h><br />#include <sys/ioctl.h><br />#include <ifaddrs.h><br /> <br />#defineIFI_NAME16/* same as
2011-05-05 16:48:00 1730
原创 TCP_QUICKACK 介绍
<br />TCP_QUICKACK属性的影响分为两种情况:<br />对于主动连接(connect)的fd,设置TCP_QUICKACK=0,该往往说明客户端将很快有数据要发送给服务器,所以在三次握手协议中的第三步,客户端会延迟发送ACK,而是直接给服务器发送request数据,并将ACK随request包一同发给服务器。<br /> <br />对于被动接受(accept)的fd,设置了TCP_QUICKACK=0。<br />这种情况需要先明白一个过程,比如对于一个http协议,三次握手协议结束后,客
2011-04-18 14:28:00 5846
转载 epoll
<br />在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。<br />相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:<br />#define __FD_SETSIZE 1024<br />表示select最多同时监听1024
2011-04-12 17:16:00 478
原创 理解HTTP消息头
<br /><br />(一)初识HTTP消息头但凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头。<br />做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,后者是可选的,而前者是必须的。每当我们打开一个网页,在上面点击右键,选择“查
2011-04-11 09:18:00 537
转载 setsockopt 的 SO_REUSEADDR标识使用说明
<br /><br />1、当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启<br />动的程序的socket2要占用该地址和端口,你的程序就要用到该选项。 <br />2、SO_REUSEADDR允许同一port上启动同一服务器的多个实例(多个进程)。但<br />每个实例绑定的IP地址是不能相同的。在有多块网卡或用IP Alias技术的机器可<br />以测试这种情况。 <br />3、SO_REUSEADDR允许单个进程绑定相同的端口到多个socket上,但每个soc<
2011-04-07 15:52:00 6590
转载 linux tcp socket的发送与接收缓冲区
<br /> 应用程序可通过调用send(write, sendmsg等)利用tcp socket向网络发送应用数据,而tcp/ip协议栈再通过网络设备接口把已经组织成struct sk_buff的应用数据(tcp数据报)真正发送到网络上,由于应用程序调用send的速度跟网络介质发送数据的速度存在差异,所以,一部分应用数据被组织成tcp数据报之后,会缓存在tcp socket的发送缓存队列中,等待网络空闲时再发送出去。同时,tcp协议要求对端在收到tcp数据报后,要对其序号进行ACK,只有当收到一个tcp
2011-04-07 13:42:00 11730
转载 数据结构——红黑树
<br />红黑树<br />一棵红黑树是指一棵满足下述性质的二叉搜索树(BST, binary search tree):<br />1. 每个结点或者为黑色或者为红色。<br />2. 根结点为黑色。<br />3. 每个叶结点(NIL)都是黑色的。<br />4. 如果一个结点是红色的,那么它的两个子节点都是黑色的(也就是说,不能有两个相邻的红色结点)。<br />5. 对于每个结点,从该结点到其所有子孙叶结点的路径中所包含的黑色结点数量必须相同。<br />红黑树的每个节点上的属性除了有一个key、
2011-03-29 15:15:00 631
转载 fd_set 详解
select()函数的作用 系统调用select和poll的后端实现,用这两个系统调用来查询设备是否可读写,或是否处于某种状态。如果poll为空,则驱动设备会被认为即可读又可写,返回值是一个状态掩码如何使用select()函数? select()函数的接口主要是建立在一种叫'fd_set'类型的基础上。它('fd_set') 是一组文件描述符(fd)的集合。由于fd_set类型的长度在不同平台上不同,因此应该用一组标准的宏定义来处理此类变量: fd_set set; FD_
2011-03-29 13:15:00 23956 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人